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.