View Full Version : [Hack] Chi conosce la "SQL injection" e come si evita?!
Matrixbob
22-02-2006, 18:07
... dovrebbe essere la principale causa di hackeraggio delle applicazioni web.
Dato che ne sto sviluppando qualcuna vorrei evitare di causare danni alla mia applicazione ed al server ospitante.
TNX a chi collabora, a nome di tutti!
Matrixbob
23-02-2006, 13:16
UP!
... o sono nella sezione sbagliata?!
Per esempio in PHP secondo voi basta fare l'escape dei dati inseriti a form?!
no, è che l'argomento è parecchio "ostico" e quasi nessuno me compreso sa rispondere
Matrixbob
23-02-2006, 20:45
no, è che l'argomento è parecchio "ostico" e quasi nessuno me compreso sa rispondere
Nemmeno su Wikipedia trovo qualcosa.
Dove posso provare secondo te?!
Cambiare nella sezione "programmazione" non so se servirebbe ...
monkey island
24-02-2006, 02:21
Argomento molto interessante..
Quà trovi qualche dritta : http://sicurezza.html.it/articoli/articoli.asp?IdCatArticoli=18&idarticoli=46
Matrixbob
24-02-2006, 16:10
Argomento molto interessante..
Quà trovi qualche dritta : http://sicurezza.html.it/articoli/articoli.asp?IdCatArticoli=18&idarticoli=46
Grazie, sto già stampando! :)
Per il PHP studiati bene l'utilizzo delle funzioni magic_quotes_gpc(), addslashes(), stripslashes(), mysql_real_escape_string(). Su http://it2.php.net/manual/it/ trovi tutte le spiegazioni delle funzioni e le eventuali implementazioni di sicurezza.
Calibro
http://calibro.candyham.com
ekerazha
11-03-2006, 10:45
Ciao...
SQL Injection è una tecnica che viene utilizzata sfruttando un'errata gestione dei dati ricevuti in input da una pagina (attraverso metodo GET, POST o COOKIES) e che vengono successivamente utilizzati all'interno di una query al database.
es. stupido in PHP:
$query = "SELECT * FROM database WHERE $password='$_POST['pass']'";
Capirai bene che se io passo invio al database una query utilizzando al suo interno quello che ricevo attraverso $_POST['pass'] , un utente simpatico potrebbe inserire un $_POST['pass'] apposito con l'intenzione di alterare la query finale.
Es. se io invece di
mia_password
inserisco
' OR username='pippo
la query finale risulta
SELECT * FROM database WHERE $password='' OR username='pippo'
Quindi nel caso specifico potrò visualizzare i dati associati ad una determinata password, non conoscendo la password bensì il semplice username (ho utilizzato una cosa simile in una pagina del sito della mia scuola ancora alle superiori eheh).
Per evitare cose come queste ti puoi (ti devi) aiutare con le già citate funzioni messe a disposizione dai vari linguaggi (ad esempio in PHP addslashes() etc.) ma non sempre queste funzioni risolvono completamente le cose, perchè vi potrebbero essere casi in cui, in base alla gestione che viene fatta dei dati in input, non è necessario utilizzare gli apici per alterare una query (es. potrei concatenare una UNION SELECT ad una SELECT la cui condizione WHERE finale utilizza per il confronto un valore intero e non una stringa). Insomma non esiste la "soluzione" per eccellenza, devi stare molto attento a come gestisci i dati ricevuti in input per fare in modo che, indipendentemente dalla loro conformazione, non possano alterare la query al database nella quale li utilizzerai.
Matrixbob
11-03-2006, 20:39
OK, TNX! :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.