Lorenzo Pascucci
a- a+

Comune errore nei moduli di login in ASP

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

Infatti si è scoperto che inserendo una certa usernamee password è possibile accedere in molti sistemi cheprevedono appunto un controllo dell'esistenza di unutente.

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

Il problema sta nel fatto che inserendo come username epassword 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 controllosull'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 modosarà impossibile inserire qualsiasi username epassword che presentano un uguale (=), carattere spessovietato nell'uso di dati come username e passwordappunto.

Perchè si riesce ad entrare nel sistema? Sempliceperchè in questo modo la stringa che effettua ilcontrollo:

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 lorosito troverete una variante per AdMentor, ma il nostro scriptpermette di effettuare un controllo semplice, ma effettivo sututti gli script con il bug)



Ti potrebbe interessare anche

commenta la notizia