¿Qué es Inyección SQL?
Una inyección de SQL o SQL Injection es un fallo de seguridad presente en muchas aplicaciones Web y que permite la ejecución de consultas SQL arbitrarias. El nombre de inyección viene de la posibilidad de agregar contenido adicional a esa sentencia SQL.
El origen de este fallo está en que una aplicación web vulnerable hace uso de datos proporcionados por un usuario, por ejemplo a través de un formulario, para realizar una operación de consulta en una base de datos. Si el mecanismo para realizar esta consulta no se encarga de filtrar de forma adecuada los datos introducidos por un usuario, existe el riesgo de que la sentencia SQL a ejecutar se vea alterada por caracteres de control del motor de base de datos como el caso de comillas simples o dobles.
Para evitar este problema, se debe hacer uso de un framework web que contemple las medidas de seguridad o hacer uso de mecanismos seguros de generación de sentencias SQL como es el caso de las consultas preparadas (prepared statements).
La fundación OWASP, que vela por la seguridad en el desarrollo de aplicaciones, reconoce las vulnerabilidades de inyección, como las de inyección SQL, como parte de su TOP 10 de vulnerabilidades más comunes.