Piccolo aiuto con login in asp

di il
8 risposte

Piccolo aiuto con login in asp

Ciao a tutti, ho il seguente problema.

di solito non programmo in asp ma devo realizzare un lavoro in questo linguaggio.
dunque io devo utenticare login e password su un db access.
invio la stringa sql:

sql = "SELECT * FROM tabella WHERE logindb = '&login&' and pswdb = '&psw&'"

dove ovviamente '&login&' e '&psw&' sono i Request.Form inviati dal modulo di compilazione.
Ho fatto molte prove e sembra che il problema sia che lo script legge e compara solo la prima coppia presente nel db ignorando le altre. Quindi il login viene accettato solamente se inserisco la prima coppia presente nel database.
come faccio a fare il confronto con tutte le coppie del db?
Spero di essere stato chiaro e che qualcuno possa darmi una mano.
ciao a tutti e grazie.

8 Risposte

  • Re: Piccolo aiuto con login in asp

    Ciao la stringa é errata!!

    la sintassi corretta é :
    sql = "SELECT * FROM tabella WHERE logindb = '" & login & '" and pswdb = '" & psw & "'"

    Ciao
  • Re: Piccolo aiuto con login in asp

    Ciao Toki, grazie per la risposta. Purtroppo ancora qualcosa non va. Dunque io uso principalmente PHP. Quando, in php devo controllare che una stringa sql abbia "fatto il suo dovere" lo faccio con un qualcosa del genere:

    if(stringa){
    ....
    }
    else{
    ...
    }

    Ora, non so se sbaglio ma in ASP ho cercato di fare una cosa del genere e cioè:

    sql = "SELECT * FROM operatori WHERE logindb = '" & login & '" and pswdb = '" &psw& "' " (...la tua stringa)

    if sql then
    Response.Write("ok")
    else
    Response.Write("no")
    end if

    e cioè se trovi la coppia in questione allora va bene altrimenti no.
    ho provato anche con:

    if (sql) {
    Response.Write("ok")
    }
    else
    Response.Write("no")
    }

    ma è tutto vano. lo script non va e non trovo ancora una soluzione.
    Ho fatto altre prove ma niente. Dove sbaglio?
  • Re: Piccolo aiuto con login in asp

    Finalmente!!!!!!!!!!
    Ne sono venuto a capo in questo modo:

    sql = "SELECT * FROM operatori WHERE logindb = '"&login&"' AND pswdb = '"&psw&"'"

    rs.Open sql, conn, 3, 3


    if NOT(rs.eof) then

    Response.Write("ok")
    else
    Response.Write("no")
    end if


    se a qualcuno può tornare utile...
  • Re: Piccolo aiuto con login in asp

    Attenzione! Le login fatte in questo modo contengono un grosso buco di logica. Provate a mettere come password il seguente valore :

    a' or 'a' = 'a'

    la stringa sql diventerebbe :
    select * from utenti where userid = 'xx' and password = 'a' or 'a' = 'a' rendendo accessibile il sito a tutti.

    Spero di essere stato utile





    Roberto
  • Re: Piccolo aiuto con login in asp

    Ciao PIUMO,

    hai toccato un argomento molto importante.

    la SQL Injection corretta é ' or 'a' = 'a


    CMQ basta eseguire il replace degli apici nei due campi in ingresso per impedirne il funzionamento.

    Es

    login = replace(login,"'","''")


    Ciao
  • Re: Piccolo aiuto con login in asp

    Hai ragione ho aggiunto un apice di troppo.....

    un'altra soluzione possibile è quella (dando per scontato che lo user id sia univoco) di cercare prima il record per user id e poi confrontare le password!

    Roberto
  • Re: Piccolo aiuto con login in asp

    Ho letto qualcosa su sql injection. ho fatto varie prove, compresa la stringa < ' or 'a' = 'a > ma non funziona, nel senso che mi nega l'accesso. In più il login lo effettuo anche impostando dei cookies e fino adesso non ho avuto problemi.
    ciao
  • Re: Piccolo aiuto con login in asp

    Devo provare. effettivamente non avevo mai considerato questa tecnica. grazie per la dritta.
    ciao
Devi accedere o registrarti per scrivere nel forum
8 risposte