$ devBelts
2026-05-19

SQL injection

Una vulnerabilidad de seguridad donde un atacante inserta código SQL malicioso en inputs del usuario, permitiendo leer, modificar o eliminar datos de la base de datos.

SQL injection ocurre cuando valores del usuario se concatenan directamente en queries SQL:

// ❌ VULNERABLE
const query = `SELECT * FROM usuarios WHERE email = '${email}'`;
// Input malicioso: ' OR '1'='1' --
// Resultado: SELECT * FROM usuarios WHERE email = '' OR '1'='1' --'
// Devuelve TODOS los usuarios

// ✅ SEGURO: usar parámetros
const usuarios = await sql`SELECT * FROM usuarios WHERE email = ${email}`;
// El valor se envía como parámetro separado, no como parte del SQL

Prevención:

  • Siempre usar queries parametrizadas
  • Nunca concatenar strings del usuario en SQL
  • Usar ORMs o query builders que parametrizan automáticamente
  • Validar y sanitizar inputs del usuario

Es una de las vulnerabilidades más críticas según OWASP Top 10.

Ver también