Lorenzo Pascucci
a- a+

Comune errore nei moduli di login in ASP

Vediamo oggi di trovare una soluzione ad un comune errore che si effettua realizzando il controllo in Asp per l'accesso di un utente in una area riservata.

Infatti si è scoperto che inserendo una certa username e password è possibile accedere in molti sistemi che prevedono appunto un controllo dell'esistenza di un utente.

Uno dei sistemi più famosi afflitto da questo bug è AdMentor in tutte le sue versioni.

Il problema sta nel fatto che inserendo come username e password il seguente codice:

'OR''='

(apice singolo, OR, apice singolo, apice singolo, uguale, apice singolo)

è possibile accedere all'area riservata.

Ecco quindi che possiamo effettuare un semplice controllo sull'username e la password inserite che può essere simile a :

username = Request.Form("username")
If InStr(username,"=") Then
    Response.redirect "errore.asp"
End If

e lo stesso controllo sulla password. In questo modo sarà impossibile inserire qualsiasi username e password che presentano un uguale (=), carattere spesso vietato nell'uso di dati come username e password appunto.

Perchè si riesce ad entrare nel sistema? Semplice perchè in questo modo la stringa che effettua il controllo:

SELECT * FROM utenti WHERE username = '" & username & "' AND password = '" & password & "'"

che diventerà

SELECT * FROM utenti WHERE username = ''OR''='' AND password = ''OR''=''"

Problema segnalato da Luca Bigon che ha ottenuto l' "informazione ufficiale" da SevurityFocus (sul loro sito troverete una variante per AdMentor, ma il nostro script permette di effettuare un controllo semplice, ma effettivo su tutti gli script con il bug)



Ti potrebbe interessare anche

commenta la notizia

C'Ŕ 1 commento
Graziano
Hai qualche domanda da fare?