Técnica de explotación que consiste en la inyección de funcionalidades que subvierte la lógica de dominio implementada en el sistema objetivo. Se produce por la ausencia de mecanismos de control de los datos ingresados por el cliente. La vulnerabilidad permite concatenar instrucciones de SQL ingresando caracteres que cierran un tipo de dato cadena. La vulnerabilidad consiste en una entrada contaminada.
Neutralización inapropiada de elementos especiales en salida usadas por un componente inferior
Existen subclases de SQLi
Considerar la siguiente expresión algebraica relacional
Esta expresión implementada en el lenguaje de programación Structure Query Language queda expresada:
SELECT * FROM x WHERE y = 'a' AND z = 1
Un adversario puede manipular esta cadena en el sistema si tiene derechos de escritura sobre el valor 'a', un dato tipo caracter que es recibido por el sistema como parámetro de una función que compone la expresión de consulta sobre la base de datos objetivo
La cadena contaminada queda expresada de la siguiente forma
SELECT * FROM x WHERE y = 'a'--' AND z = 1
Los caracteres de comentario del lenguaje SQL, al no ser neutralizados por un mecanismo de control, permiten anular una porción de la cadena. El adversario puede entonces pasar a la siguiente etapa, que es ordenar nueva funcionalidad inesperada. Es importante considerar el tipo de datos expuesto por sistema y como las entradas pueden ser contaminadas.