Los ataques de inyección de código SQL implican insertar o "inyectar" consultas SQL a través de la entrada del cliente en la aplicación. Un ataque exitoso de este tipo se puede utilizar para leer información confidencial de la base de datos y modificarla o eliminarla. En los casos más extremos, le permite emitir comandos del sistema.
El siguiente es un fragmento de código peligroso que se puede utilizar para realizar un ataque de inyección sql:
SELECT * FROM users WHERE name = userName;
La variable "userName" se recupera del usuario. Si un atacante nombra 'OR' 1 '='1' como su nombre de usuario, esto obligará a seleccionar el nombre de usuario correcto porque la expresión '1' = '1' siempre es verdadera.
Puede utilizar una herramienta llamada sqlmap para probar vulnerabilidades de inyecciónsql, que automáticamente es capaz de encontrar y utilizar la capacidad de inyectar consultas SQL. Admite seis técnicas de inyección de código sql:basadas en lógica, ciegas, basadas en errores, consultas UNION,consultas acumulativas y ataques OOB. Permite atacar bases de datos MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB e Informix.
En la ilustración siguiente se muestra un ejemplo del uso de sqlmap,que, mediante pruebas heurísticas, detectó que el parámetro id puede ser vulnerable a un ataque por inyección de código sql en la consulta que se está probando.