Ir al contenido
Vulnerabilidades y Pruebas de Seguridad

¿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.

Zamak TechnologiesActualizado el 12 de julio de 2026

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.

1

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.

2

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.

3

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.

4

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

#3
la inyección es la 3ª mayor categoría de riesgo del OWASP Top 10 (2021), en la lista desde hace más de dos décadas
19%
fue la incidencia máxima de inyección entre las aplicaciones probadas para el OWASP Top 10 2021
$ 4,44 mi
costo promedio global de una brecha de datos (IBM, 2025)

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Preguntas frecuentes sobre inyección SQL

¿Qué es la inyección SQL, en una frase?
Es un ataque en el que el criminal inserta comandos de base de datos por dentro de un campo común del sitio que no trata la entrada, engañando al sistema para revelar, alterar o borrar datos que deberían estar protegidos.
¿Cuál es la diferencia entre inyección SQL y XSS?
Las dos son fallas de inyección, pero apuntan a objetivos distintos. La inyección SQL ataca la base de datos de la empresa, para robar o alterar datos. El XSS ataca el navegador del visitante del sitio, para robar su sesión o su información. Una golpea la caja fuerte; la otra, al cliente.
¿Cómo sé si mi sitio es vulnerable a la inyección SQL?
La forma correcta es probar a propósito: un escaneo automatizado de seguridad y una prueba de penetración verifican cada campo que llega a la base. Confiar en que “nunca pasó” no es un diagnóstico; la falla suele quedar silenciosa hasta que se explota.
¿Por qué la inyección SQL todavía existe después de tantos años?
Porque la corrección depende de disciplina en cada campo del código, y basta un olvido para reabrir la puerta. La técnica de defensa es conocida y definitiva (consultas parametrizadas), pero hay que aplicarla en todos lados, todo el tiempo.
¿Una empresa pequeña debe preocuparse por la inyección SQL?
Sí. Los atacantes usan herramientas que barren la internet en busca de cualquier sitio con un campo vulnerable, sin elegir por el tamaño. Un sitio institucional o una tienda simple con un formulario mal protegido ya es objetivo suficiente.

Términos relacionados