Command Palette

Search for a command to run...

Glosario SQL Injection (SQLi)

¿Qué es la Inyección SQL (SQLi)?

La Inyección SQL (SQLi) es un tipo de ataque donde los atacantes introducen una declaración SQL maliciosa en un campo de entrada para manipular la base de datos.

Este ataque se dirige a aplicaciones que no manejan adecuadamente la validación, la entrada del usuario, permitiendo el acceso no autorizado a datos sensibles como contraseñas o detalles de tarjetas de crédito, etc.

Cómo funciona la Inyección SQL

Cuando una aplicación incluye directamente la entrada del usuario en una consulta de base de datos sin la validación adecuada, los atacantes pueden modificar el comportamiento de la consulta para introducir una declaración SQL maliciosa.

Por ejemplo:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Un atacante podría introducir:

' OR '1'='1

Resultando en:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

Esto siempre devuelve verdadero, otorgando acceso no autorizado.

Por qué la Inyección SQL es importante en la ciberseguridad

La Inyección SQL es la técnica más peligrosa y antigua en ciberseguridad. Este tipo de ataque se encuentra consistentemente en el OWASP Top 10.

Incluso pequeñas vulnerabilidades permiten a un atacante:

  • Acceder, modificar o eliminar datos
  • Eludir la autenticación
  • Ejecutar operaciones administrativas en la base de datos.
  • Comprometer todo el sistema.

Tipos Comunes de Inyección SQL

  • SQLi Clásico: Inyección directa a través de formularios web o parámetros de URL.
  • SQLi Ciego: Los atacantes infieren información de la base de datos indirectamente (por ejemplo, a través de mensajes de error o tiempo de respuesta).
  • SQLi Basado en Unión: Utiliza el operador UNION para combinar resultados de múltiples consultas.
  • SQLi Basado en Errores: Se basa en mensajes de error de la base de datos para extraer información.
  • SQLi Ciego Basado en Tiempo: Explota retrasos en la respuesta del servidor para adivinar resultados de consultas.

Cómo Prevenir la Inyección SQL

1. Usar Consultas Parametrizadas (Sentencias Preparadas)

Asegúrese de que los comandos SQL traten la entrada del usuario como datos, no como código ejecutable.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Validación y Saneamiento de Entradas

Validar todas las entradas de los usuarios, permitiendo solo los caracteres esperados.

3. Usar Marcos de Trabajo ORM

Marcos como Prisma, Hibernate, etc., reducen el manejo directo de SQL.

4. Principio de Menor Privilegio

Limitar los permisos de usuario, otorgando solo los permisos necesarios.

5. Pruebas de Seguridad Regulares

Utilice herramientas de prueba de seguridad de aplicaciones como SAST, DAST o IAST para detectar fallos de inyección temprano.

Ejemplo en el Mundo Real

Un sitio web de una tienda en línea sufrió una brecha donde los atacantes utilizaron una inyección SQL en un formulario de inicio de sesión para extraer detalles de tarjetas de crédito de su base de datos.

Términos Relacionados

Próximos pasos

¿Listo para asegurar sus aplicaciones? Elija su camino a seguir.

Únase a más de 500 empresas que ya aseguran sus aplicaciones con Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready