La inyección SQL es una técnica de inyección de código donde un atacante inserta sentencias SQL maliciosas en campos de entrada o parámetros de URL que se incorporan en consultas de base de datos. Si la aplicación no sanitiza adecuadamente las entradas, el SQL inyectado puede leer, modificar o eliminar datos, eludir la autenticación o incluso ejecutar comandos del sistema.
La inyección SQL sigue siendo una de las vulnerabilidades web más comunes y peligrosas. El OWASP Top 10 lista consistentemente los ataques de inyección entre los riesgos de seguridad más críticos. El ataque explota la práctica de construir consultas SQL concatenando la entrada del usuario con cadenas de consulta, permitiendo a los atacantes alterar la lógica de la consulta. Los libros sobre seguridad de bases de datos en Amazon explican técnicas de ataque y defensas.
Para los servicios de acortamiento de URL, los riesgos de inyección SQL existen dondequiera que la entrada del usuario interactúe con la base de datos: crear URL cortas, buscar destinos de redirección, consultar datos de analítica y gestionar cuentas de usuario. La defensa principal es usar consultas parametrizadas (sentencias preparadas) que separan el código SQL de los datos.
Defensas adicionales incluyen validación de entrada, cuentas de base de datos con privilegios mínimos, procedimientos almacenados y firewalls de aplicaciones web. Los ORM y constructores de consultas modernos típicamente usan consultas parametrizadas por defecto, pero los desarrolladores deben permanecer vigilantes contra la construcción de consultas sin procesar. Los libros sobre seguridad de aplicaciones en Amazon cubren estrategias de defensa en profundidad.