Ciao a tutti,
sto realizzando una tesi di laurea incentrata sull'SQL injection e avrei bisogno di sapere se esite una direttiva del file di configurazione php.ini (che a quanto pare dovrebbe essere true di default) per prevenire l'esecuzione di query multiple in una singola istruzione, separate dal carattere ";".
Esempio pratico:
script PHP:
Nel caso specifico si ha checodice:// verifica login $sql = mysql_query("SELECT * FROM UTENTI WHERE username='$username' AND password='$password'"); $login_check = mysql_num_rows($sql); if($login_check > 0){ while($row = mysql_fetch_array($sql)){ foreach( $row AS $key => $val ){ $$key = stripslashes( $val ); } header("Location: restricted.html"); } } else { echo "<CENTER> Login Errato. Username e/o password errati. </CENTER>"; include 'login.html'; } ?>
$username= '; DROP TABLE UTENTI -- '
$password= ''
La query risultante è quindi:
SELECT * FROM UTENTI WHERE username=''; DROP TABLE UTENTI -- '' AND password=''
Questo SQL injection, che nello specifico è stato inserito da un form di login, dovrebbe cancellare la tabella UTENTI ma in realtà questo non accade.
Ho già disattivato la direttiva magic_quotes_gpc quindi l'uso dell'apice singolo fornito tramite post allo script php che genera questa query è valido.
Help me please