Saltar al contenido
uencoder

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' --
    Output
    Bypasses password verification

    Comments out the password condition

Errores comunes

Building SQL with string concatenation
Always use parameterized queries

Términos relacionados

Herramientas relacionadas

References