Php: SQL injection ,controlli di sicurezza parametri

In questo tutorial vi mostrerò come proteggere al meglio le nostre applicazioni web , scritte in php/mysql,evitando le falle più usuali, l' esempio  di oggi  è :  il passaggio dei parametri nell’url.

Esempio:

pagina.php?id=1

pagina.php?nome=tizio

In una situazione del genere (senza controlli di sicurezza), un hacker  in menu di 5 minuti è in grado di sapere il numero esatto delle colonne , presenti nella tabella , dove l’id =1  e/o il nome=tizio .
Dopodiché utilizzando UNION SELECT  può recuperare altre informazioni  sul nostro database ed infine  compromettere il nostro sistema.

Come proteggersi
Nel caso dei parametri di tipo numerico , basterebbe fare un controllo sul dato proveniente,per esempio  tramite la funzione php is_numeric.


if(is_numeric($_GET['id'])){ 

… Contenuto pagina..
} 
else {
 echo 'Dato non valido';
}

 

Mentre per il controllo dei parametri di tipo alfanumerico ,la soluzione potrebbe essere quella di controllare la stringa d’ingresso , e ripulirla eventualmente  dal codice dannoso,ciò si può fare grazie all’array,contenente le parole che fanno parte della sintassi sql ,più  la   funzione str_ replace , per rimpiazzare sql .


$controllo = array("union", "UNION", "SELECT",'select','NULL'); 
$rr = array("", "", "","","");
$stringa = str_replace($controllo, $rr, $were);?>
$query="select * from tabella where none="$stringa" ";
...Contenuto pagina
Segnalibro e Share

Costantino Fusco

Sviluppatore di siti internet e di applicazioni web. Programmazione Web: PHP/MySQL HTML/CSS Ajax Javascript wordpress, Strategie SEO