SQL Injection-tester

Undervisningsværktøj til at forstå SQL injection-angreb og lære at forebygge dem med parameteriserede forespørgsler

Al behandling sker i din browser. Ingen data uploades.
Offline Ready

SQL Injection-tester

Undervisningsværktøj til at forstå SQL injection-angreb og lære at forebygge dem med parameteriserede forespørgsler

🔒Al behandling sker i din browser. Ingen data uploades.
Forespørgselsskabelon
SELECT (Login)
Bruger-input (simuleret)
Indtast simuleret bruger-input for at se, hvordan det påvirker SQL-forespørgslen...
Almindelige SQL Injection-payloads
Sårbar forespørgsel (strengsammenkædning)
USIKKER - Brug ikke i produktion
SELECT * FROM users WHERE username = 'user_input_here' AND password = 'pass123'
Sikre parameteriserede alternativer
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]);
Bedste praksis for forebyggelse af SQL Injection
1
Brug altid parameteriserede forespørgsler (prepared statements) i stedet for strengsammenkædning til SQL.
2
Brug et ORM (Sequelize, SQLAlchemy, Entity Framework), som automatisk genererer parameteriserede forespørgsler.
3
Anvend princippet om mindste privilegium: databasekonti bør kun have de rettigheder, de har brug for.
4
Brug hvidlister til dynamiske identifikatorer som kolonnenavne og tabelnavne, der ikke kan parameteriseres.
5
Implementér inputvalidering som en forsvar-i-dybden-foranstaltning, men stol aldrig på det som den eneste beskyttelse.
6
Aktivér WAF (Web Application Firewall) regler og overvåg logfiler for SQL injection-forsøgsmønstre.