Attacchi informatici: sql injection, una piaga, parte I

  1. Alessio Arrigoni
  2. Blog
  3. Attacchi informatici: sql injection, una piaga, parte I

Recentemente mi sono trovato a dover metter mano su portali che frequentemente mostravano dei contenuti indesiderati.
Ma qual'era la causa? La risposta è molto semplice: SQL Injection.

SQL Injection consiste in un attacco informatico che sfrutta la cattiva pratica di molti sviluppatori di concatenare le stringhe destinate ad un database server.

Prendiamo ad esempio la seguente  query: "select * from utenti where nome like ' " + TextBox1.Text + "%' ".
Un utente del web che dovesse cercare "Alessio" causerebbe l'esecuzione della query: "select * from utenti where nome like 'Alessio%' ".

Non essendoci alcuna validazione del contenuto della TextBox, un hacker potrebbe sfruttare questa vulnerabilità inserendo nella casella di testo la stringa: " '' or 'a' like 'a ".
L'istruzione SQL risultante sarebbe la seguente: "select * from utenti where nome like '' or 'a' like 'a%'", causando quindi la restituzione del contenuto completo della tabella utenti.

Questo esempio non è che la punta dell'iceberg. Il peggio ha ancora da venire ma questo deve cominciare a far riflettere gli sviluppatori poco accorti in quanto essere vulnerabili a questo tipo di attacco è contrario alla normativa vigente in materia di privacy (http://www.garanteprivacy.it).
Fino ad ora non abbiamo neppure citato il linguaggio di sviluppo o la tecnologia che il web server usa per eseguire le query sul database. Questo perché sono ininfluenti. Sia questo un sito asp classico, php, jsp, asp.net o cgi, il problema è solo causato dallo sviluppatore che non valida l'input dell'utente e non dalla tecnologia usata.

Validare bene l'input utente non è una cosa da inventare. La soluzione sta nella collection dei parametri del command.
Sia che parliamo di ado classico che di ado.net, entrambi prevedono l'uso dei command e di una collection di parametri.

public function LeggiUtenti(StartDate As DateTime ) As DataTable
     Dim Cnn As new SqlConnection("Server=localhosto;Database=pubs;Trusted_Connection=True;")
     Dim Cmd As new SqlCommand("Select * from utenti where data > @Data",Cnn)
     Cmd.Parameters.Add("@Data", SqlDbType.DateTime).Value = StartDate

     Dim Da As new SqlDataAdapter(Cmd)
     Dim Dt As new DataTable()
     Try
        Da.Fill(Dt)
     Catch(Exception)
        return null
     End Try
     return Dt
End Function

Avendo utilizzato il parametro (@Data nell'esempio) e l'aggiunta del parametro nella collection dei parameters, abbiamo eliminato i rischi da injection.

Questa costituisce la migliore soluzione per fronteggiare la SQL Injection ma la sicurezza non si costruisce mai su un solo fronte. Oltre a scrivere codice sicuro è fondamentale aggiungere le altre contromisure sulla configurazione del database server.

L'autore

Mi sono laureato in informatica presso l'università degli studi di Milano. Da sempre mi occupo di informatica e programmazione.
Da qualche anno sono diventato un blogger e collaboro con alcune testate on-line.
Ho al mio attivo anche alcune pubblicazioni on-line.

Ti potrebbe anche interessare

Leggi le ultima novità dal blog.

Gli allegati di posta elettronica, aprirli in sicurezza

Leggi tutto...
Se da un lato inviare messaggi di posta elettronica con degli allegati è diventato un modo estremamente pratico e popolare per inviare documenti, parallelamente è anche vero che questo ...

Cryptolocker: come combattere il virus che prende in ostaggio i file

Leggi tutto...
Con aggressività e tossicità stanno infettando i computer di singoli, aziende ed enti pubblici. Si chiamano cryptovirus e rappresentano il nemico più insidioso attualmente in ci ...

Consigli utili per la sicurezza dei dati in azienda

Leggi tutto...
Ecco alcuni semplici accorgimenti per la sicurezza dei dati in azienda. 1 - Scegliere password complesse e cambiarle regolarmente Scegliere le password che non contengano informazioni personali. ...

Come monitorare le attività sul nostro per evitare intrusioni indesiderate

Leggi tutto...
Probabilmente molti di noi si saranno chiesti se esiste un metodo per scoprire se qualcuno spia il nostro computer. Purtroppo, anche usando programmi di sicurezza standard, è possibile per ch ...

Programmi free anti ransomware

Leggi tutto...
I Ransomware sono la peggior categoria di virus che ci possa capitare, diffusi a livello mondiale e capaci di colpire anche i PC dotati dì un antivirus aggiornato. Questa categoria di virus ...

Internet delle cose: che cos’è, vantaggi e implicazioni nella sicurezza

Leggi tutto...
Si parla sempre più di Internet delle Cose, traduzione italiana dell'appellativo inglese Internet of Things (IoT). A molti può sembrare qualcosa di fumoso e poco attuale; in real ...

Articoli recenti

Leggi le ultima novità dal blog.

Social media: come scegliere i canali giusti per promuovere la tua attività

Leggi tutto...
I social media sono uno strumento fondamentale per molte attività, ma scegliere i canali giusti è essenziale per massimizzare i risultati. Non tutti i social sono adatti a ogni tipo di ...

Intelligenza artificiale: i pro e i contro

Leggi tutto...
Tema molto dibattuto in questi ultimi tempi: l’intelligenza artificiale. Argomento di grande rilevanza nella società odierna, che suscita sia entusiasmo che preoccupazione. Da un lato, ...

Cosa sono i dati basati su SSD ?

Leggi tutto...
Le SSD (acronimo di solid state drive, o unità di memoria a stato solido) sono delle unità di memoria particolarmente popolari nel mondo dei giocatori di videogiochi. Essendo i videogi ...

Perché utilizzare una VPN per l'accesso al cloud ?

Leggi tutto...
Il 2020 ha visto un enorme aumento del crimine informatico. Sebbene le persone non andassero in ufficio a causa delle preoccupazioni relative al COVID-19, molti si sono trovati inclini a maggiori ri ...

Errori comuni nell’archiviazione dei dati: quali sono e come evitarli ?

Leggi tutto...
Errori comuni nell’archiviazione dei dati: quali sono e come evitarli? Siamo nell’era digitale in cui di dati e le informazioni sul web sono una componente chiave di qualsiasi tipo di ...

Consigli sulla sicurezza: come il vostro computer potrebbe compromettersi nel momento peggiore

Leggi tutto...
La sicurezza del proprio dispositivo è oggi qualcosa a cui si deve prestare una particolare attenzione. La rete è invasa da sempre più pericoli, in grado di compromettere i vost ...