SQL Injection

La SQL INJECTION, altro non è che un’iniezione di codice in un database, tramite un attacco di questo tipo, ovvero con stringhe ben congeniate è facilissimo avere l’accesso non autorizzato con pieni poteri Admin su un’applicazione web.
L’attacco è reso possibile da una cattiva o assente validazione degli input (valori) passati ed elaborati dall’applicazione web.

Prendiamo ad esempio una qualsiasi pagina di login, se nel campo “userid” si immette il valore Admin e nel campo “password“ il valore passprova, la nostra query SQL sarà:


SELECT * tabella_utenti
WHERE userid = 'Admin'
AND password = 'passprova'

Questo codice è esatto ma non offre la sicurezza necessaria, proviamo a inserire una stringa ben strutturata, stiamo attenti alla posizione degl’apici, ad esempio nel campo “password” andiamo ad inserire:

1' or '1' = '1

la query risultante è la seguente:


SELECT * FROM tabella_utenti
WHERE userid = 'Admin'
AND password = '1' OR '1' = '1'

E’ facile notare cosa è successo, la query SQL grazie all’operatore OR imporrà ‘1′ = ‘1′, dato che l’uguaglianza si è verificata ecco che abbiamo l’accesso al pannello amministrativo dell’applicazione web senza conoscere userid e password.

L’attaccante potrà a questo punto manipolare la query SQL per ottenere delle informazioni sensibili o cambiare valori presenti nel database. Questo tipo di attacco è molto pericoloso e può portare a manipolazioni di dati, sottrazioni di dati sensibili e altri tipi di vulnerabilità.

Torna all'inizio