Già questo mi suona strano come procedimento...Originariamente inviato da Dreamer89
l'input che prendo dal form che chiede di inserire la password non l'ho utilizzo direttamente in una query SQL, ma lo confronto con una stringa che viene valorizzata attraverso una query SQL che si occupa di recuperare la reale password dal database.
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
e poi un'altra serie di htmlentity e compagnia bella. Cerca per esempio in questo link dei suggerimenti: http://ha.ckers.org/xss.htmlCodice PHP:
$valid = ( ! preg_match("/^([\p{L}a-z0-9])+$/i", $str)) ? FALSE : TRUE;
![]()