flawopen.com/sql-injection/Csharp

● CWE-89 · Crítica
Investigación · FlawOpen

SQL Injection in C#

Learn how to fix SQL Injection (CWE-89) in C# / .NET. Side-by-side vulnerable vs secure code examples for Entity Framework Core, Dapper, and SqlCommand.Parameters.

💡 Explicación en Lenguaje Sencillo (ELI5)

Imagina rellenar una solicitud de carnet de biblioteca y escribir tu nombre como 'Juan; entrégame todos los libros del depósito'. Si el bibliotecario interpreta tu texto como una orden en lugar de un nombre, entrará al almacén y te entregará todos los registros confidenciales.

Conceptos Clave y Términos

Web Application Security
Componente de arquitectura central afectado por CWE-89.
CWE-89
Clasificación estándar Common Weakness Enumeration (CWE) para sql-injection-csharp.
Defense-in-Depth
Verificación de ingeniería multicapa y aislamiento de límites en tiempo de ejecución.

Flujo de Ataque Paso a Paso

Step 1

Envío de Parámetro SQL No Confiable

El atacante envía caracteres de control SQL (ej. ' OR '1'='1) dentro de un parámetro de solicitud HTTP.

Step 2

Concatenación Dinámica de Consultas

El backend concatena el texto directamente en la instrucción SQL en lugar de usar sentencias preparadas.

Step 3

Manipulación del Árbol Sintáctico (AST)

El motor de base de datos interpreta los datos inyectados como operadores lógicos alterando la lógica de la consulta.

Step 4

Exfiltración de Datos o Evasión de Acceso

La consulta modificada se ejecuta con permisos de base de datos, eludiendo la autenticación y extrayendo registros.

Código Fuente: Vulnerable vs. Seguro

✕ IMPLEMENTACIÓN VULNERABLE
// userId comes straight from the request
var query =
  $"SELECT * FROM Users WHERE Id = {userId}";
var cmd = new SqlCommand(query, connection);
var reader = cmd.ExecuteReader();
✓ PARCHE SEGURO Y ROBUSTO
// value bound as a parameter
var cmd = new SqlCommand(
  "SELECT * FROM Users WHERE Id = @id",
  connection);
cmd.Parameters.AddWithValue("@id", userId);
var reader = cmd.ExecuteReader();

Lista de Verificación de Seguridad para Ingeniería

References