Iniezione SQL
Un'iniezione SQL è una forma di attacco informatico che prende di mira database collegati a siti web e applicazioni web. Questi attacchi sfruttano software del server del sito web e del database configurati in modo non corretto per indurre un server a interpretare istruzioni SQL che altrimenti non eseguirebbe. Questi attacchi possono rivelare informazioni personali e finanziarie sensibili, consentire a un aggressore di modificare o eliminare informazioni memorizzate in un database oppure fornire altri accessi non autorizzati.
Un sito web è vulnerabile a un'iniezione SQL quando accetta dati inseriti dall'utente tramite un modulo di testo e li include come parte di una query SQL. Invece di compilare il campo del modulo con le informazioni previste, come un nome utente, l'aggressore inserisce una stringa di testo che modifica la query SQL. Per esempio, una query ipotetica potrebbe iniziare con SELECT UserID, Name, Password FROM Users WHERE UserID = , seguita dai dati inseriti in un campo del modulo per l'ID utente. Se l'utente inserisce il proprio ID utente, la query funziona come previsto e mostra le sue informazioni.
Tuttavia, se il server inserisce il testo immesso nella query senza applicare restrizioni, un aggressore può usarlo per modificare l'istruzione SQL stessa. Se invece di un ID utente qualcuno inserisce il testo 317 OR 1=1, la query diventa SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;. Poiché OR 1=1 restituisce sempre un valore vero, sostituisce l'ID utente; la query restituisce invece gli ID utente, i nomi e le password di tutte le voci nella tabella Users. Altri tipi di inserimento di codice possono consentire a un aggressore di accedere come amministratore del sito, eliminare record o tabelle da un database oppure, in alcuni casi estremi, inserire ed eseguire script shell e altro codice.
Un amministratore del sito può prevenire gli attacchi di iniezione SQL mantenendo aggiornato il software del server. È inoltre importante "sanificare" i dati inseriti nel database limitando il testo immesso o filtrando determinati caratteri. Gli amministratori dei siti web possono anche parametrizzare le query SQL, usando segnaposto nella query che fanno riferimento ai dati inseriti dall'utente invece di inserirli direttamente nella query.
Metti alla prova le tue conoscenze