header image
Home arrow Libra Security arrow Ethical Hacking arrow SQL Injection: Un esempio pratico
SQL Injection: Un esempio pratico
Indice articolo
SQL Injection: Un esempio pratico
Pagina 2

L'attacco di Sql-injection sta proprio nell'iniettare nello script PHP dati arbitrari tramite il form in html. In questo caso, se lo script non compie i dovuti controlli, basta immettere per esempio come user pippo e come password ' OR user='pippo per accedere con le credenziali dell'utente pippo.
La query per il database diventerà infatti:

SELECT * FROM users WHERE user='pippo' AND pwd='' OR user='pippo'

La disgiunzione inclusiva OR è uguale al legame logico VEL e restituisce TRUE se una delle due condizioni è vera. La condizione per l'utente pippo è verificata e quindi il login viene effettuato.

Da questo esempio si capisce come tale tecnica vada assolutamente prevista in fase di programmazione, al fine di evitare spiacevoli sorprese, tramite accessi non autorizzati ad aree protette del sito.

Proteggersi dalla SQL injection

L'unica possibilità di protezione è un controllo sui dati ricevuti da parte del programmatore, durante lo sviluppo del programma. Bisogna cioè assicurarsi che l'input ricevuto rispetti le regole necessarie, e questo può essere fatto in diversi modi:

  • controllare il tipo dei dati ricevuti (se ad esempio ci si aspetta un valore numerico, controllare che l'input sia un valore numerico);
  • forzare il tipo dei dati ricevuti (se ad esempio ci si aspetta un valore numerico, si può forzare l'input affinché diventi comunque un valore numerico);
  • filtrare i dati ricevuti attraverso le espressioni regolari (regex);
  • sostituire i caratteri pericolosi con equivalenti caratteri innocui (ad esempio in entità html, oppure utilizzando le funzioni addslashes e stripslashes di PHP);
  • effettuare l'escape dei dati ricevuti (ogni linguaggio, solitamente, mette a disposizione particolari funzioni per questo scopo).
  • nel caso del login cui sopra, criptare le credenziali di accesso prima di inserirle nella query SQL (evitare che le informazioni sensibili siano memorizzate nel DB in chiaro).

Ovviamente, questi metodi possono essere applicati anche insieme sullo stesso dato in input. La scelta varia proprio a seconda delle tipologie di questi dati. Occorre, quindi, prestare particolare attenzione a tutte le varianti di un input, tenendo conto di ogni possibile (oppure improbabile) ipotesi.

Libra Security offre servizi di Vulnerability Assessment offrendovi la possibilità di verificare la conformità del Vs. sito all'SQL Injection, oltre che a molte altre vulnerabilità.

Richiedi maggiori informazioni qui!



 
Cerca su Libra Srl
Links