Che cosa è un SQL Injection?

February 19

Che cosa è un SQL Injection?


Una iniezione di SQL è un attacco dannoso su una banca dati informatica, per cui un attaccante inserti, o inietta, una query SQL - una richiesta formale al database - in una stringa che viene poi eseguito dalla banca dati, attraverso i dati che entra in un programma per computer. In caso di successo, una SQL injection può estrarre i dati sensibili dal database, inserire, aggiornare o cancellare i dati o addirittura spegnere il sistema di gestione di database.

SQL dinamico

iniezione SQL sfrutta una tecnica di programmazione noto come "SQL dinamico". Il testo completo di un'istruzione SQL dinamico, o un comando, si sa quando un programma viene compilato, ma è costruito, in modo dinamico, dalla immissione dei dati da parte dell'utente quando viene eseguito il programma. Un utente malintenzionato termina il comando costruito prematuramente e aggiunge un nuovo comando, terminato con un segno di commento, come "-", in modo che qualsiasi testo successivo viene ignorato al momento dell'esecuzione. In una forma un po 'più sofisticata di SQL injection, un attacker inietta codice dannoso in dati che vengono memorizzati nel database; quando i dati memorizzati viene recuperato e utilizzato per costruire un'istruzione SQL dinamica, viene eseguito il codice dannoso.

effetti

Esattamente quello che gli aggressori possono ottenere tramite iniezione SQL dipende dalla loro fantasia e abilità, ma le conseguenze tipiche di un SQL injection sono la perdita di confidenziale, la perdita di integrità dei dati e problemi legati all'autenticazione, o autorizzazione, degli utenti del database. Se le informazioni di autorizzazione si svolge nel database stesso, una SQL injection può estrarre le informazioni, o modificarlo, in modo che gli utenti non autorizzati possono connettersi al database.

piattaforme interessate

SQL injection si applica, ovviamente, la SQL, il linguaggio di query di database più comuni, ma qualsiasi piattaforma che richiede l'interazione con un database SQL può essere influenzata. vulnerabilità di SQL injection sono facili da individuare e facile da sfruttare, che ha fatto sì che l'iniezione SQL è diventato un problema comune con i pacchetti software di database e siti web basati su database.

Validazione

Se un attacco inietta codice SQL dannoso che viene eseguito senza errori, non vi è alcun modo per rilevare l'iniezione SQL dall'interno di un programma per computer. i programmatori di database devono quindi rivedere tutto il codice programma che costruisce istruzioni SQL dinamiche e convalidare tutto l'input dell'utente, senza fare alcuna ipotesi circa la dimensione, il contenuto o il tipo di dati. Un utente malintenzionato può deliberatamente incorporare un "DROP TABLE" dichiarazione, o qualche altro, dichiarazione altrettanto dannoso in un campo di testo, in modo da i programmatori devono garantire che i programmi si comportano in modo appropriato in tali circostanze.