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:
codice:
// 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';
}
?>
Nel caso specifico si ha che
$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