Inyección SQL

La inyección SQL ocurre cuando datos no confiables se mezclan con el texto de una consulta. La defensa principal son consultas preparadas y valores enlazados, no concatenación.

Inyección SQL es una pieza habitual del flujo SQL: consultar, filtrar, agrupar o modificar datos. Cada ejemplo usa tablas de demostración para que puedas experimentar sin riesgo.

Cómo practicar: ejecuta la consulta tal cual, revisa columnas y tipos, luego cambia un filtro o un alias y vuelve a ejecutar.

Esta lección sobre Inyección SQL forma parte del tutorial SQL de The Data Schools. Cada ejemplo está pensado para ejecutarse en el editor con las tablas de demostración Clientes, Productos o Pedidos.

Lee la sintaxis, ejecuta el ejemplo tal cual y después modifica columnas, filtros o valores para comprobar que entiendes el comportamiento de la sentencia.

Consejo: escribe consultas pequeñas y verifica el resultado antes de combinar varias cláusulas. Así localizas errores de sintaxis más rápido.

Errores frecuentes: olvidar la indentación en bloques if, for o def; confundir = con ==; no importar un módulo antes de usarlo.


Filtro seguro con literal

En el editor usamos un valor fijo; en una app real ese valor iría como parámetro enlazado.

Filtro seguro con literal

SELECT Nombre_Cliente, Ciudad FROM Clientes WHERE Nombre_Cliente = 'Ana García';
Abrir en editor

Resultado:

Nombre_ClienteCiudad
Ana GarcíaMadrid

Ciudad desde lista cerrada

Filtra por una ciudad concreta sin construir SQL dinámico desde entrada del usuario.

Ciudad desde lista cerrada

SELECT TOP 5 Nombre_Cliente, Ciudad FROM Clientes WHERE Ciudad = 'Madrid' ORDER BY Nombre_Cliente;
Abrir en editor

Resultado:

Nombre_ClienteCiudad
Ana GarcíaMadrid
Carlos RuizMadrid

Resumen

  • Nunca concatenes entrada del usuario en el texto SQL.
  • Usa parámetros para valores y listas permitidas para identificadores dinámicos.
  • Concede permisos mínimos y controla los mensajes de error.

Cómo practicar en el editor

1. Pulsa Pruébalo tú mismo en un ejemplo.
2. Cambia un filtro, columna o literal.
3. Ejecuta y compara el resultado con la tabla de ejemplo.

Comprueba lo aprendido

Responde 2–3 preguntas sobre esta lección. Verás ✓ en verde si aciertas o ✗ en rojo si fallas.