La inyección SQL es uno de los ataques más viejos de la web y, sorprendentemente, sigue funcionando en 2026. Ocurre cuando una web construye sus consultas a la base de datos pegando directamente lo que escribe el usuario, sin separarlo de las órdenes.
Imagina un formulario de acceso que, por dentro, pregunta a la base de datos algo como: "dame el usuario cuyo nombre es [lo que escribió el usuario] y cuya contraseña es [lo que escribió]". Si el atacante, en el campo de usuario, escribe algo como admin' --, consigue "cerrar" la orden antes de tiempo y comentar la comprobación de la contraseña. Resultado: entra como administrador sin saber la clave. Ese -- es un comentario en SQL: todo lo que va detrás se ignora.
El problema de fondo es de confianza: la aplicación trata el texto del usuario como si fuera parte de la orden, cuando debería tratarlo solo como datos. La solución se llama consultas parametrizadas (o prepared statements): la orden y los datos viajan por separado, así que el nombre de usuario nunca puede convertirse en una instrucción. Es sencillo de aplicar y elimina el problema de raíz.
La inyección SQL es el ejemplo perfecto de por qué en seguridad hay que aprender a la vez a atacar y a defender: entiendes el fallo explotándolo en un laboratorio, y solo entonces comprendes de verdad por qué la defensa funciona.