Insieme al boom informatico arrivato grazie all’era di internet, il crimine non è rimasto purtroppo a guardare con le mani in mano ma si è evoluto di pari passo con le nuove tecnologie, divenendo sempre più complesso ed “esperto” nel settore.

I tanto temuti attacchi informatici che vengono effettuati ogni giorno, possono avvenire ai danni dei computer e dei siti internet di singoli, privati, aziende o persino enti di varia natura, con scopi che vanno dal semplice danneggiare al comprometterne la sicurezza e le funzioni.

Uno degli scopi più comuni, specialmente al giorno d’oggi, è il furto di dati sensibili custodito nei siti e i database dei vari domini, con lo scopo di sottrarre ogni genere di informazione degli utenti registrati, inclusi numeri di carta di credito, pin di sicurezza, password e così via. Tutto ciò che può essere utile insomma letteralmente, a sottrarre account, denaro e molto altro, come vedrai nell’approfondimento a seguito.


In mezzo alle innumerevoli tipologie, uno di questi attacchi in particolare è noto come SQL injection, e per chi gestisce un sito che interagisce con un’utenza o un qualsivoglia database che ne conservi i dati, è imperativo sapere che cos’è e perché è importante proteggersi.

SQL injection: definizione

SQL injection, a volte abbreviato per comodità in SQLI, significa letteralmente iniezione di SQL, e prende tale nome dalla relativa tecnica della modalità di attacco: il code injection (iniezione di codice). Si tratta dell’inserimento (iniezione, in gergo), di stringhe di codice SQL malevolo nei campi di input di un determinato sito, che ne consentano la successiva esecuzione indisturbata, responsabile di diverse azioni nei confronti delle applicazioni di gestione dati.

Queste azioni possono andare dal semplice leggere e rubare i dati contenuti nei database, alterarli o addirittura consentire l’intero controllo del database stesso all’autore dell’attacco informatico che ne diviene sostanzialmente l’amministratore.


L’SQL injection è stato per anni uno fra i metodi d’attacco più temuti, capaci di sfruttare le vulnerabilità di siti realizzati in maniera inadeguata, tanto da guadagnarsi nel 2017 un posto nella top 10 delle maggiori vulnerabilità riconosciute dall’Open Web Application Security Project.


Ma quali rischi comporta di concreto, e chi colpisce maggiormente questo attacco? Stando ad un’indagine effettuata nel 2012, le applicazioni web riceverebbero in media ben quattro attacchi al mese, ed in particolare i rivenditori arrivano a riceverne il doppio rispetto ai siti delle industrie.
Poter avere una completa lettura e controllo dei database, effettuando anche il cosiddetto IP spoofing per proteggere il punto d’origine dell’attaccante, consente una serie di effetti ad alto rischio per gli utenti e i proprietari dello stesso.

Oltre alla lettura dei dati sensibili, l’autore di un attacco SQL injection può permettersi anche azioni concrete come il bloccare determinate transazioni o modificare bilanci, così come rendere inaccessibili determinati dati. Se gestisci un sito web che amministra dati di questo genere e si interfaccia all’utenza, diventa dunque indispensabile il non sottovalutare questo rischio e prendere le giuste precauzioni per tutelarti.

Come avviene nello specifico l’attacco? Per spiegarti nel dettaglio come vengono effettuati questi attacchi sarebbe necessario compilare una documentazione approfondita di pagine e pagine di materiale tecnico, con tutte le relative nozioni spiegate punto per punto. Il tempo più o meno di prendersi una laurea.

Una spiegazione molto generica e semplificata, può aiutare però a comprendere i meccanismi alla base di queste vulnerabilità, al fine di capirne a pieno la serietà. Per iniziare serve quindi una piccola premessa sulla definizione di SQL.

La sigla sta per Structured Query Language, ed è il linguaggio per eccellenza per comunicare coi database. Le singole interazioni inviate al database prendono il nome di query (interrogazione), comandi che eseguono un determinato effetto.

Ogni query, volendo semplificare ulteriormente, contiene sostanzialmente un ordine da eseguire, un’informazione da richiedere e così via: che sia leggere, alterare, cancellare la struttura del database, le sue porzioni ordinate in tabelle e i relativi contenuti.


Un esempio? Tutti gli utenti che accedono ad un sito dotato di un semplice modulo di accesso in cui inserire nome utente e password, o un modulo per l’invio e la registrazione di dati personali, stanno effettuando concretamente un’interazione col database.

La stessa semplice richiesta di controllare che nome utente e password siano corretti, l’immissione di dati, sono interazioni fra utente e database.


Va da se dunque che vi sia effettivamente la possibilità per una persona di interagire e comunicare tramite il linguaggio SQL col database. Solitamente l’autorizzazione ad eseguire modifiche profonde e visualizzare dati specifici viene concessa solo all’account del cosiddetto amministratore, dotato di tutti i privilegi più elevati che gli consentono di agire su ogni aspetto nel controllo e modifica dei dati.

Chi sfrutta le vulnerabilità dei siti con l’SQL injection guadagna dunque gli stessi poteri dell’amministratore, e per fare ciò non ha bisogno di rubare né account né password, in quanto aggira i sistemi di controllo e va direttamente ad accedere ai registri (il database) in cui tali informazioni sono contenute. Non ti basterà dunque una fantasiosa creazione e aggiornamento periodico delle password a proteggerti da tali pericoli.

Le vulnerabilità, ossia i punti attaccabili dall’SQL injection, sono costituite da tutte quelle potenziali interazioni fra utente semplice ed applicazioni che non sanno proteggersi da comandi malevoli. Sempre volendo semplificare in maniera estremamente riduttiva, è come se l’inserimento di determinati ordini da eseguire venisse accettato dal database per colpa dell’incapacità di distinguere la natura irregolare dell’ordine stesso. In uno dei casi più elementari per fare un esempio, è stata usata per diverso tempo una fra le stringhe più semplici – da cui oggi per fortuna la maggior parte delle applicazioni risultano protette – in cui era sufficiente inserire i cosiddetti caratteri di escape, come le virgolette singole o doppie, per veicolare senza ostacoli un comando malevolo.

Due piccoli caratteri tipografici che fanno da maschera a una breve riga di testo, facendola diventare un comando verso un database.


In questo caso molto banale si rende necessaria dunque come difesa il semplice filtraggio o controllo dei caratteri di escape eventualmente inseriti dall’utente, ad esempio nei campi login o password per impedirgli di inviare comandi diversi dal semplice nome utente o password richiesti dal modulo.
I tipi di attacchi SQL sono divisi in quattro grandi classi, che prevedono l’uso di formule più o meno complesse e devastanti per la sicurezza del database.

Si tratta di una serie di tecniche in continua evoluzione, che richiedono l’intervento a monte da parte di un esperto per poter tutelare in maniera opportuna le difese delle applicazioni e dei relativi dati. È un po’ come se decidessi di rinforzare le porte e le finestre di casa per evitare intrusioni e furti: si rende indispensabile rivolgersi ad esperti di blindature, serrature e sistemi di sicurezza che sappiano svolgere bene il loro lavoro, perché limitarsi a mettere una porta più robusta o sperare che nessun ladro decida di entrare in casa, non basta di certo come garanzia di sicurezza.

La protezione passa dunque per due metodi distinti. Il primo è attraverso la programmazione, gestione e manutenzione costante delle applicazioni e del database. Ossia la scrittura alla base della composizione di una determinata applicazione, che sia effettuata in maniera tale da non lasciare esposte facili vulnerabilità alle mani dei malintenzionati.

Solitamente il lavoro non viene eseguito da un solo programmatore, specialmente nel caso di applicazioni complesse, bensì da un team di programmatori specializzati. Operazione che richiede il giusto tempo e per cui ti sconsiglio di pretendere lavori eseguiti in tempi record, pena la maggior presenza di falle a cui non si è data la giusta attenzione.

La programmazione, una volta eseguita correttamente e dopo la relativa messa in funzione del sito e dell’applicazione, necessita anche di costante aggiornamento. Nonostante tale operazione sia spesso costosa è fondamentale, in quanto dal lato degli hacker lo studio di elusione dei metodi di sicurezza è sempre purtroppo all’avanguardia e costante. Esattamente come un ladro impara a raffinare le sue tecniche e scassinare sistemi sempre più complessi.


Il secondo metodo per proteggersi passa per la corretta installazione del cosiddetto WAF (Web Application Firewall). Probabilmente avrai già sentito parlare del concetto di firewall, una protezione già attiva su banali computer domestici, atta ad impedire accessi non autorizzati al dispositivo.

Il WAF è un sistema complementare da affiancare alla programmazione, che costituisce uno scudo importante per l’applicazione e il sito. Esso si cura di controllare il traffico HTTP in entrata, valutando in soldoni gli accessi alle risorse di sistema ed eventualmente bloccandoli. Oltre agli accessi, il WAF può consentire anche il controllo dei messaggi inviati dall’utente, alla ricerca di comandi e azioni potenzialmente malevoli da filtrare.

Gli attacchi SQL sono in definitiva uno dei rischi informatici più comuni e rilevanti al giorno d’oggi, in un’era affamata di tutta quella serie di informazioni sempre più rilevanti che l’informatizzazione ci porta a dover inserire e lasciare custodite in numerosi siti. Non si tratta solo di attacchi portati a piccoli siti e realtà locali, che non ne sono comunque esenti, ma anche a grandi portali o siti istituzionali che negli anni hanno subito nel tempo danni rilevanti.


Molti di questi attacchi come hai visto in precedenza, hanno banalmente come fine l’acquisizione illecita di dati per arrivare a sottrarre denaro, ma le possibilità criminali sono pressoché infinite. In alcuni casi gli attacchi SQL sono stati portati per motivazioni del tutto slegate dagli aspetti economici, come azioni politiche e di protesta. Non sono pochi infatti i corposi gruppi di hacker che nella storia hanno eseguito attacchi per motivi idealistici.


Qualunque sia il motivo che porta il tuo sito o la tua applicazione alla gestione di dati degli utenti, bilanci, o qualsiasi cosa possa fare gola ad un malintenzionato, e qualunque sia la tipologia di sito che possiedi, la prevenzione e la protezione si rendono passi fondamentali per poter garantire la sicurezza e la privacy di tutti: dal proprietario ai suoi eventuali dipendenti e gli utenti. Meglio non sottovalutare i rischi.

Condividi: