Glosario digital · Seguridad

¿Qué es la inyección SQL?

Explicado en breve

La inyección SQL es un tipo de ataque en el que los delincuentes introducen comandos de base de datos en campos de entrada o parámetros de dirección de una aplicación. Si la entrada no se separa correctamente, la base de datos ejecuta el comando ajeno y revela, modifica o borra datos.

Categoría SeguridadTiempo de lectura unos 3 minActualizado 16 de octubre de 2026
Imagen destacada: Inyección SQL

Inyección SQL: definición y causa

Las aplicaciones web suelen guardar clientes, pedidos y contenidos en una base de datos SQL y la consultan con comandos SQL. Si un comando así se construye insertando sin más las entradas del usuario en el texto, un atacante puede alterar la estructura del comando. La base de datos ya no puede distinguir entonces entre código y datos.

La causa es casi siempre la misma: las entradas de formularios, campos de búsqueda, cookies o parámetros de dirección se incorporan sin comprobar a las consultas a la base de datos. La inyección SQL forma parte desde hace años de la categoría «Injection» del OWASP Top 10, aunque la contramedida eficaz se conoce desde hace mucho. Afecta sobre todo a soluciones a medida antiguas y a plugins sin mantenimiento.

Cómo funciona un ataque

En lugar de un término de búsqueda, un atacante introduce un fragmento de texto que altera la consulta original, por ejemplo de modo que una condición sea siempre verdadera. Así pueden eludirse comprobaciones de inicio de sesión, leerse datos de otras tablas o modificarse entradas, en casos extremos incluso borrarlas. Los atacantes comprueban miles de sitios con herramientas automatizadas en busca de estas debilidades; los mensajes de error de la base de datos mostrados sin filtrar les facilitan el trabajo.

  • Fuga de datos: se leen datos de clientes, pedidos o credenciales
  • Manipulación: se modifican precios, contenidos o cuentas
  • Elusión: se aceptan inicios de sesión sin una contraseña válida
  • En el peor de los casos: toma de control del servidor de base de datos o de otros sistemas

Ejemplo práctico: el viejo filtro de la tienda

Un comercio especializado opera una tienda web basada en una solución antigua programada a medida. El filtro de productos construye la consulta a la base de datos directamente a partir del parámetro de la dirección. Un atacante modifica el parámetro y puede así recuperar tablas con datos de clientes; el comerciante solo se da cuenta cuando los clientes reciben correos fraudulentos con los datos reales de sus pedidos. El daño: pérdida de confianza, esfuerzo y, posiblemente, obligaciones de notificación.

La solución es puro oficio: las consultas se convierten en sentencias parametrizadas, se restringen los privilegios de base de datos de la tienda y se ocultan los mensajes de error hacia fuera. Un firewall de aplicaciones web ofrece una protección adicional, pero no sustituye la corrección en el código. Tras el incidente queda por aclarar qué datos se vieron afectados.

Medidas de protección y puesta en práctica

La protección más eficaz son las sentencias preparadas (consultas parametrizadas), en las que comando y datos permanecen estrictamente separados. Los ORM y los frameworks modernos las utilizan por defecto, siempre que las consultas no se construyan concatenando texto. Ayudan además la validación de entradas según una lista de valores permitidos, un usuario de base de datos con privilegios mínimos, software actualizado y pruebas de seguridad específicas.

Nano Concepts revisa código y configuraciones con revisiones de código y análisis de vulnerabilidades, corrige fallos en aplicaciones existentes y desarrolla software nuevo según estándares seguros desde el principio. En las soluciones a medida antiguas suele ser aconsejable una modernización gradual en lugar de reparaciones de emergencia permanentes, para que la seguridad no dependa de puntos aislados.

  • Construir SQL concatenando entradas del usuario
  • Usar un usuario de base de datos con privilegios de administrador para el sitio web
  • Mostrar errores detallados de la base de datos en el navegador
  • Confiar solo en filtros de entrada («eliminar caracteres especiales»)
  • Seguir operando plugins obsoletos y scripts heredados

Preguntas frecuentes sobre Inyección SQL

Mucha, porque puede abrir el acceso directo al conjunto de datos: pueden leerse o modificarse datos de clientes, credenciales y pedidos. Basta una sola entrada vulnerable. Al mismo tiempo, el fallo es evitable si la aplicación está bien programada y las consultas se parametrizan de forma consecuente.

Una revisión de código, un escaneo de vulnerabilidades y una prueba de penetración lo muestran con fiabilidad. Son indicios errores de base de datos en la salida o entradas extrañas en los registros del servidor. Quien use software a medida o plugins antiguos debería hacerlos revisar con regularidad.

Bloquea muchos patrones de ataque habituales y gana tiempo, pero no sustituye la corrección en el código. Los ataques hábilmente camuflados pueden eludir las reglas. La protección fiable son las consultas parametrizadas; el WAF es una capa adicional y no sustituye a una programación limpia.

Los sistemas base se revisan y parchean de forma continua. Los fallos surgen sobre todo por versiones obsoletas, plugins mal programados y extensiones a medida. Por eso son decisivas las actualizaciones oportunas, una selección ajustada de plugins y extensiones comprobadas.

Servicios que encajan

Términos relacionados

Relevante para estos sectores

Artículos relacionados de la revista

El presupuesto adecuado en 60 segundos

Análisis de necesidades: Inyección SQL

Responda unas breves preguntas: normalmente nos pondremos en contacto con usted en un plazo de 24 horas con una primera valoración.

Solicitar proyecto