Tester de inyección SQL
Herramienta educativa para entender los ataques de inyección SQL y aprender a prevenirlos con consultas parametrizadas
Todo el procesamiento ocurre en tu navegador. No se sube ningún dato.
Tester de inyección SQL
Herramienta educativa para entender los ataques de inyección SQL y aprender a prevenirlos con consultas parametrizadas
🔒Todo el procesamiento ocurre en tu navegador. No se sube ningún dato.
Plantilla de consulta
SELECT (Login)
Entrada del usuario (simulada)
Payloads comunes de inyección SQL
Consulta vulnerable (concatenación de cadenas)
INSEGURO - No usar en producción
SELECT * FROM users WHERE username = 'user_input_here' AND password = 'pass123'
Alternativas seguras con parámetros
Node.js (mysql2)
const [rows] = await connection.execute( 'SELECT * FROM users WHERE username = ? AND password = ?', [username, password] );
Python (psycopg2)
cursor.execute(
"SELECT * FROM users WHERE username = %s AND password = %s",
(username, password)
)Java (PreparedStatement)
PreparedStatement ps = conn.prepareStatement(
"SELECT * FROM users WHERE username = ? AND password = ?"
);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();C# (SqlParameter)
using var cmd = new SqlCommand(
"SELECT * FROM users WHERE username = @user AND password = @pass",
connection
);
cmd.Parameters.AddWithValue("@user", username);
cmd.Parameters.AddWithValue("@pass", password);PHP (PDO)
$stmt = $pdo->prepare(
'SELECT * FROM users WHERE username = :user AND password = :pass'
);
$stmt->execute(['user' => $username, 'pass' => $password]);Mejores prácticas de prevención de inyección SQL
1
Siempre usa consultas parametrizadas (sentencias preparadas) en lugar de concatenación de cadenas para SQL.2
Usa un ORM (Sequelize, SQLAlchemy, Entity Framework) que genera consultas parametrizadas automáticamente.3
Aplica el principio de mínimo privilegio: las cuentas de base de datos deben tener solo los permisos que necesitan.4
Usa listas de permitidos para identificadores dinámicos como nombres de columnas y tablas que no se pueden parametrizar.5
Implementa validación de entrada como medida de defensa en profundidad, pero nunca confíes en ella como única protección.6
Habilita reglas de WAF (Web Application Firewall) y monitorea los registros en busca de patrones de intentos de inyección SQL.