Un’iniezione SQL (Structured Query Language) è un tipo di attacco che viene quasi sempre tentato contro un sito Web basato su database. È un tentativo di inserire codice dannoso nelle query SQL del sito al fine di interferire con la gestione dei dati distruggendo, alterando o rivelando i dati archiviati nelle tabelle del database che guida il sito. SQL è un linguaggio di programmazione standard utilizzato per creare, aggiornare e recuperare i dati archiviati nei database.
I pericoli degli attacchi SQL injection sono numerosi e spesso molto devastanti quando vengono eseguiti con successo. Informazioni sensibili come numeri di carta di credito, cartelle cliniche di una persona, nomi utente e password per account come servizi bancari online ed e-mail, nonché vari tipi di numeri di identificazione possono essere esposti ai criminali informatici. Sebbene il furto di dati sia probabilmente l’obiettivo principale di chiunque tenti di utilizzare SQL injection, non è l’unica motivazione per l’uso di questo o di qualsiasi altro tipo di tecnica di code injection, come lo scripting tra siti. I visitatori di un sito Web che visualizzano informazioni che non gradiscono potrebbero tentare attacchi SQL injection per disabilitare il sito, rubare dati o alterare i dati per distruggere la missione delle persone dietro il sito.
A volte viene tentato un attacco SQL injection contro un sito Web da un visitatore scontento che potrebbe aver visto il suo account bannato dai proprietari del sito, che invidia la popolarità del sito o che cerca di distruggere il business online di qualcuno che considera essere un nemico. La conoscenza di SQL è ovviamente necessaria per lanciare un attacco SQL injection, ma generalmente non è considerato un linguaggio molto difficile da imparare, rispetto ad altri linguaggi di programmazione, e molto può essere ottenuto solo con una comprensione di base, ma solida, di come usare esso. Ciò significa che c’è un buon numero di persone che navigano in Internet che hanno l’abilità necessaria per tentare l’SQL injection contro un sito web.
Gli sviluppatori Web, in particolare quelli specializzati nello sviluppo Web back-end, sono responsabili di garantire che i siti che programmano siano protetti da SQL injection. C’è quasi sempre più di un modo per ottenere una sicurezza così importante e la maggior parte di questi metodi sono considerati soluzioni semplici ma molto efficaci. Ad esempio, uno sviluppatore può utilizzare la funzione mysql_real_escape_string() o istruzioni preparate durante lo scripting nel linguaggio PHP (Hypertext Preprocessor). I metodi scelti per difendersi dagli attacchi devono essere considerati con attenzione, perché le prestazioni del sito nel suo insieme non possono essere trascurate anche quando si imposta la sicurezza.