Gli attacchi sql injection comportano l'inserimento o l'"iniezione" di query SQL tramite input client nell'applicazione. Un attacco riuscito di questo tipo può essere utilizzato per leggere informazioni riservate dal database e modificarle o eliminarle. Nei casi più estremi, consente di emettere comandi di sistema.
Di seguito è riportato un codice pericoloso che può essere utilizzato per eseguire un attacco sql injection:
SELECT * FROM users WHERE name = userName;
La variabile "userName" viene recuperata dall'utente. Se un utente malintenzionato nomina 'OR' 1 '='1' come nome utente, ciò costringerà a selezionare il nome utente corretto perché l'espressione '1' = '1' è sempre vera.
È possibile utilizzare uno strumento denominato sqlmap per testare le vulnerabilità sql injection,che è automaticamente in grado di trovare e utilizzare la possibilità di iniettare query SQL. Supporta sei tecniche di sql injection:query UNION basate sulla logica, non vedenti, basate su errori, query UNION,query cumulative e attacchi OOB. Consente di attaccare database MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB e Informix.
Nella figura seguente viene illustrato un esempio di utilizzo di sqlmap che,utilizzando test euristici, ha rilevato che il parametro id potrebbe essere vulnerabile all'attacco sql injection nella query in fase di test.