SQL Injection

Con questo articolo vogliamo spiegare in consa consiste un attacco SQL Injection e come fronteggiarlo.

La prima cosa che c’è da sapere quando si ha davanti una pagina di login di un qualsiasi sito web è che dietro vi è sicuramente un database contenente le informazioni che voi richiedete nel momento in cui vengono inseriti Username e Password.

Anche se non si vede, inserire i vostri dati equivale a mandare un messaggio al database in questione con il seguente linguaggio:

“SELECT * FROM users WHERE user='”.$_POST[‘user’].”‘ AND pwd='”.$_POST[‘pwd’].”‘”

Si lo so per alcuni di voi potrebbe sembrare aramaico antico, in realtà la “traduzione” è la seguente:

“Seleziona TUTTO (* significa All) dalla tabella USERS dove il valore user è “il vostro username” e la password è “la vostra password”.

In poche parole si sta richiedendo al database di restituire tutte i dati a cui voi, con il vostro username e la vostra password avere accesso. Il significadel del valore POST per i più curiosi è che lo scambio di pacchetti tra client (voi) e il server a cui state facendo richiesta di accesso avviene in modo cifrato, così da evitare un altro tipo di attacco chiamato MiTM (Man in The Middle).

Ora qui entra in gioco la nostra vulnerabilità SQL Injection: nei siti affetti da questo problema, si può “injettare” (gergo tecnico) quinti iniettare del codice malevolo con lo scopo di ingannare il server ed ottenere le informazioni che altrimenti sarebbero per noi inaccessibili. Per motivi di sicurezza non posso esporre tutto il procedimento o dettagli precisi per cui vi chiedo un grande sforzo di fiducia J
Posso tuttavia illustrare l’idea attraverso cui viene attuato l’attacco. Come alcuni probabilmente avranno notato, ci sono degli apici all’interno della richiesta precedente (in gergo si chiama Query): quegli apici non sono casuali, essi determinano l’inizio e la fine di una stringa, ovvero di qualcosa che il nostro database deve interpretare ed eseguire. Senza di essi, oppure ponendoli in modo errato, le richieste non avrebbero senso e otterremmo solo messaggi di errore.

Il gioco della SQL Injection quindi è il seguente: dare ordine al database di tirar fuori le informazioni che vogliamo sfruttando il fatto che il nostro sito internet non riconosce quando vengono inseriti dei caratteri speciali all’interno della richiesta dell’utente, ovvero all’interno dei campi di user e password. E qui che bisogna intervenire per fronteggiare questa vulnerabilità. Supponiamo che un programmatore abbia configurato male la query del database e che esso non riconosca i caratteri speciali, un Cracker (così si chiamano coloro che fanno hack a scopo malevolo) potrebbe injettare determinate informazioni per ottenere utenze, password, informazioni varie, qualsiasi cosa!

Come si previene quindi? Semplice, configurando bene la query e facendo si che:

  • I caratteri inseriti all’interno dei campi di username e password siano accettabili e non contengano caratteri speciali che possano in qualche modo alterare le richieste
  • Non mostrare con messaggi di errore che sono stati rilevati caratteri speciali, questo potrebbe far capire all’attaccante che il sito potrebbe presentare delle vulnerabilità

Questo è in breve una vulnerabilità SQL Injection, ovviamente per varie questioni ho semplificato moltissimo ciò che avviene in realtà, ma l’idea dovrebbe essere questa.

Ovviamente per i più esperti queste brevi righe non saranno gran che soddisfacenti ma in caso servisse qualche altri chiarimento non esitate a chiedere commentando questo articolo. Vi allego inoltre il link per accedere alla pagina di Wikipedia riguardo alla SQL Injection,

https://it.wikipedia.org/wiki/SQL_injection

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...