SQL Injection
La inyección SQL consiste en que atacantes empalmen fragmentos SQL maliciosos en una cadena de consulta para que la base de datos ejecute comandos no deseados.
Propósito
Impedir que atacantes manipulen las consultas SQL a través de la entrada, robando o alterando la base de datos.
Mecanismo
Cuando la entrada del usuario se concatena directamente a la cadena SQL (p. ej., "SELECT * WHERE name='"+input+"'"), escribir ' OR 1=1 -- permite saltarse la condición. Defensas: consultas parametrizadas (prepared statements), ORMs, validación de entrada, cuentas de mínimos privilegios.
Casos de uso
- Omisión de login (' OR 1=1)
- Fuga de datos (UNION SELECT)
- Alteración de datos (UPDATE/DELETE)
- Ejecución de comandos (xp_cmdshell)
Ejemplos
- entrada
admin' --OutputBypasses password verificationComments out the password condition
Errores comunes
- Building SQL with string concatenation
- Always use parameterized queries
Términos relacionados
XSS
XSS (cross-site scripting) es el ataque donde el atacante inyecta scripts maliciosos en una página que se ejecutan en el navegador de otros usuarios; tiene formas almacenadas, reflejadas y basadas en DOM. GLOSARIO
CSRF
CSRF (cross-site request forgery) es una vulnerabilidad donde el atacante engaña a un usuario conectado para que envíe sin saberlo una petición maliciosa al sitio objetivo. GLOSARIO
SQL
SQL (Structured Query Language) es el lenguaje de consulta estándar de las bases de datos relacionales, que define y manipula datos de forma declarativa (DDL/DML/DQL/DCL). GLOSARIO