Originariamente inviato da Dascos
Già questo mi suona strano come procedimento...
In pratica, ipotizzando un codice "normale", tu verifichi che la pass inserita sia identica a quella salvata nel db in chiaro e con la select che recupera direttamente i dati inseriti nel form:
select * from users where utente = 'pippo' and password = 'mia password'...
Le password vanno salvate criptate e non si deve fare la select comprendendo nella where "la password" ma si deve fare la select che recuperi la password dell'utente (che ricordiamo è criptata) e confrontare che la password inserita nel form (opportunamente sanitizzata e a sua volta criptata con lo stesso algoritmo) corrisponda a quella recuperata dal db.
select * from users where utente = 'pippo'
Al che cripti la password in ingresso dal form e la confronti con quella che risulta dalla select.
Detto questo, assicurati che la parte di recupero dati sanitizzi l'input: intanto un bel trim, poi un controllo di tipo regexp che il dato sia di tipo alfanumerico
Codice PHP:
$valid = ( ! preg_match("/^([\p{L}a-z0-9])+$/i", $str)) ? FALSE : TRUE;
e poi un'altra serie di htmlentity e compagnia bella. Cerca per esempio in questo link dei suggerimenti:
http://ha.ckers.org/xss.html