? Un attacco di SQL , o un attacco SQL injection , prevede l'inserimento , o di iniezione, di codice dannoso in dei valori , o variabili , che gli ingressi di un utente in un programma per computer . Il codice malevolo è legato , o concatenate, con i comandi SQL legittimi per produrre un comando che produce risultati inaspettati . SQL
SQL , noto anche come Structure Query Language , è un linguaggio standard di settore per la creazione , l'aggiornamento e l'interrogazione di database relazionali o database che comprende più file di informazioni correlate , di solito memorizzato in tabelle di righe e colonne . SQL è spesso incorporato in linguaggi di programmazione general-purpose per creare programmi che permettono agli utenti di interagire con un database . Un programma potrebbe includere istruzioni SQL come "SELECT * FROM nometabella dove nometabella . Nomecampo = variablename " in cui nometabella è il nome di una tabella nel database , nomecampo è il nome di una colonna , o campo , a quel tavolo , e variablename è un ingresso valore da parte dell'utente .
gravità
la gravità di un attacco SQL è limitata solo dalla fantasia dell'attaccante e abilità. Inserendo strategicamente il punto e virgola ( ;) e doppio trattino (-) caratteri - che delimitano i comandi e commenti SQL rispettivamente - gli aggressori possono interrompere prematuramente comandi esistenti e aggiungere i propri nuovi comandi . Questi nuovi comandi potrebbero , per esempio, estrarre i dati sensibili dal database , modificare o cancellare i dati , o concedere attaccanti privilegi amministrativi completi per il database . Nell'esempio di cui sopra , se l'istruzione SQL leggere " SELECT * FROM nometabella dove nometabella nomecampo = '". + Variablename +' " ; , un utente potrebbe inserire comandi SQL aggiuntive e così assemblare un qualcosa di query del tipo" SELECT * FROM nome_tabella.nome_campo = ' someValue '; . DROP TABLE nometabella
Effetti
SQL attacca tipicamente portare alla perdita di integrità e la riservatezza dei dati , nonché altri gravi problemi , in modo da organizzazioni dovrebbero prendere sul serio la minaccia di attacchi SQL . SQL attacca in genere si verificano quando i dati entrano un programma da una fonte non attendibile o di dati vengono utilizzati per costruire dinamicamente una query SQL o entrambi. Attacchi SQL possono ovviamente influire SQL stesso , ma anche qualsiasi piattaforma che richiede l'interazione con un database SQL . Siti web basati su database sono obiettivi comuni per SQL , semplicemente perché gli attaccanti possono individuare e sfruttare le falle di SQL facilmente .
Prevenzione
fornito il codice SQL iniettato nel corso di un attacco SQL contiene errori di sintassi , esegue con successo e non possono essere rilevati programmazione. Programmatori di database devono quindi convalidare tutto l'input dell'utente ed esaminare attentamente qualsiasi codice di programma che costruisce ed esegue comandi SQL dinamici per le vulnerabilità .