¿Qué es la inyección SQL (SQL injection)?
La inyección SQL, o SQL injection, es un ataque en el que el criminal inserta comandos de base de datos por dentro de un campo común del sitio (un inicio de sesión, una búsqueda, una dirección) que la aplicación reenvía a la base sin verificar. Así engaña al sistema para revelar, alterar o borrar datos que jamás debería exponer. Es uno de los ataques web más antiguos y destructivos, porque un solo campo mal protegido puede entregar la base de clientes entera.
Cómo funciona la inyección SQL
La aplicación conversa con la base de datos por medio de preguntas (consultas). La inyección ocurre cuando lo que el usuario escribe se mezcla en esa pregunta sin tratamiento: el texto del atacante deja de ser un dato y pasa a leerse como comando. Es la diferencia entre llenar un formulario y reescribir la pregunta que el sistema le hace a la base.
Encontrar la entrada correcta
El atacante busca un campo que llegue hasta la base: un formulario de inicio de sesión, una caja de búsqueda, un parámetro en la dirección de la página. Cualquier entrada que se vuelva parte de una consulta sirve de puerta.
Probar la brecha
Escribe un carácter fuera de lo común, como una comilla, para ver si la página se rompe o se comporta de forma extraña. Un error de la base en la pantalla es la señal de que la entrada no se trata.
Inyectar el comando
Confirmada la brecha, inserta un fragmento de SQL. Un clásico es agregar una condición siempre verdadera para saltarse la verificación de contraseña, o empalmar una consulta que trae otras tablas.
Cosechar o destruir
Con el comando aceptado, la base obedece: copia la base de clientes entera, altera registros, crea un acceso de administrador o borra datos. Un formulario se volvió una puerta trasera hacia la base.
Fuente: OWASP (categoría A03:2021, Inyección).
Por dónde entra la inyección SQL
- Formularios de inicio de sesión y de registro, donde lo que se escribe se vuelve parte de una consulta.
- Cajas de búsqueda y filtros, que arman preguntas a la base a partir del texto del usuario.
- Parámetros en la dirección de la página (la parte después del signo de interrogación en la URL).
- Formularios de contacto, comentarios y cualquier campo que guarde o consulte datos.
- Interfaces de integración (APIs) y encabezados, que también llegan a la base por debajo.
Los tipos de inyección SQL
- Inyección clásica (in-band) El resultado vuelve en la propia página: la base devuelve los datos pedidos o un mensaje de error que revela su estructura. Es la forma más directa y la más fácil de explotar.
- Inyección ciega (blind) El sitio no muestra datos ni errores, pero responde de formas distintas a comandos verdaderos y falsos, o tarda más en responder. El atacante deduce la información pregunta a pregunta, más lento e igual de peligroso.
- Inyección fuera de banda (out-of-band) Cuando el retorno directo no es posible, el comando hace que la base envíe los datos por otro canal, como una solicitud de red a un servidor del atacante. Es más rara y depende de la configuración del entorno.
Lo que está en juego para el negocio
La inyección SQL importa porque su objetivo es la caja fuerte: la base de datos donde viven clientes, pedidos, contraseñas e información financiera. Una explotación exitosa no filtra un archivo, filtra la base entera, y con ella llega la exposición regulatoria (LGPD en Brasil, GDPR en Europa, entre otras), la pérdida de confianza y el costo promedio de US$ 4,44 millones por brecha en el mundo (IBM, 2025). Lo más incómodo es la edad del problema: la inyección es la 3ª mayor categoría de riesgo del OWASP Top 10 y está en la lista desde hace más de veinte años, todavía peligrosa porque basta un campo olvidado para abrir la caja fuerte. No es una amenaza exótica de frontera; es una falla conocida que persiste por descuido de código.
Cómo protegerse de la inyección SQL
La inyección SQL no se combate con desconfianza del usuario, sino con disciplina de código. La buena noticia es que la defensa central es bien conocida y definitiva:
- Use consultas parametrizadasEs la corrección de raíz. La consulta parametrizada separa el comando de los datos: lo que el usuario escribe se trata siempre como texto, nunca como parte de la instrucción. Así, no hay forma de que el texto se vuelva comando.
- Valide y trate toda entradaNunca confíe en lo que llega de afuera. Verifique el formato, el tamaño y el tipo de cada campo, y rechace lo que se salga de lo esperado. Es la segunda capa, complementaria a las consultas parametrizadas.
- Aplique el privilegio mínimo en la baseLa cuenta que la aplicación usa para hablar con la base no necesita leer todo ni borrar nada. Limitar lo que puede hacer reduce el daño aun si la inyección pasa.
- Agregue un firewall de aplicación web (WAF)El WAF filtra el tráfico de la aplicación y bloquea patrones conocidos de inyección antes de que lleguen a la base. Es una capa extra, no un sustituto de la corrección en el código.
- Pruebe de forma continuaEl escaneo automatizado y la prueba de penetración encuentran esos campos olvidados antes que el atacante. La inyección desaparece del entorno cuando se busca a propósito, no cuando se espera el incidente.
En la práctica
Un solo campo de búsqueda, dejado sin tratamiento, puede entregar la base de clientes entera. No es la cantidad de formularios lo que protege a la empresa; es el cuidado con cada uno de ellos. Por eso la defensa de la inyección SQL vive en el código y en la prueba, no en pedirle al usuario que se comporte.
Cómo Zamak trata la inyección SQL
Zamak Technologies trata la inyección SQL como lo que es, una falla de código que se previene y se prueba, y actúa junto a su equipo de desarrollo, no en su lugar: prueba las aplicaciones en busca de estas brechas, señala la corrección en el origen (consulta parametrizada, validación de entrada, privilegio mínimo en la base) y refuerza el entorno con una capa de firewall de aplicación web. En lugar de descubrir la falla por la filtración, su empresa la encuentra y la cierra antes. Es parte de la Ciberseguridad gestionada del Método Zamak, y un buen punto de partida es el diagnóstico de ciberseguridad.