Nel precedente articolo abbiamo parlato in generale di sql injection ed abbiamo visto come validare l’input in asp.net.
Ma abbiamo anche detto che è una piaga del tutto indipendente dalla piattaforma utilizzata.
In questo articolo vedremo con validare l’input in php.
Riprendiamo la query dell’esempio precedente scritta in php/mysql:
SELECT * FROM utenti WHERE nome LIKE '$_POST[“TextBox”] %'
Non essendoci alcuna validazione dell'input, un hacker potrebbe sfruttare questa vulnerabilità inserendo nella casella di testo la stringa: " '' or 'a' like 'a ".
L'istruzione SQL risultante sarebbe la seguente:
"SELECT * FROM utenti WHERE nome LIKE '' OR 'a' LIKE 'a%'", causando quindi la restituzione del contenuto completo della tabella utenti.
Come possiamo validare l’input?
Semplicemente utilizzando la funzione mysql_real_escape_string($stringa).
Quindi la nostra stringa sql verrebbe riscritta nel modo seguente:
"SELECT * FROM utenti WHERE nome LKE '" . mysql_real_escape_string($_POST["TextBox"]) . "%'”.