Programmazione Web » Php » Evitare le Sql-Injection
Evitare le Sql-Injection
Difficoltà:
Scritto da Michele Sassi
Sito Web: http://www.comefaccio.net ![]()
Questo tutorial è stato letto 2079 volte
L'incubo di ogni php-coder sono le php injection ovvere l'esecuzione arbitraria di codice SQL tramite form o url; in questo tutorial vedremo come difenderci.
Ci sono vari modi di agire:
Se la variabile deve essere INTEGER ad esempio un id, possiamo forzarla a diventare di quel tipo, con un semplice type casting:
<?php
$_GET[ "variabile" ] = (int) $_GET[ "variabile" ];
?>
Se invece è una stringa possiamo usare la funzione addslashes per trasformare ' e " in \' e \" ed evitare così le injection:
<?php
$_GET[ "variabile" ] = addslashes($_GET[ "variabile" ]);
?>
Adesso per farvi capire meglio vi farò un esempio di sql injection. Fingiamo di avere un form di login con username ($user) e password ($pass) e questa query:
SELECT * FROM utenti WHERE username='$user' AND password='$pass'
Se nel form di login scriviamo:
Username: freddy' OR 1=1--
Password:
La query magicamente diventa:
SELECT * FROM utenti WHERE username='freddy' OR 1=1--' AND password=''
Quindi si verrà loggati in ogni caso.

