SQL Injection-testare

Utbildningsverktyg för att förstå SQL injection-attacker och lära sig förebygga dem med parametriserade frågor

All bearbetning sker i din webbläsare. Ingen data laddas upp.
Offline Ready

SQL Injection-testare

Utbildningsverktyg för att förstå SQL injection-attacker och lära sig förebygga dem med parametriserade frågor

🔒All bearbetning sker i din webbläsare. Ingen data laddas upp.
Frågemall
SELECT (Login)
Användarindata (simulerad)
Ange simulerad användarindata för att se hur den påverkar SQL-frågan...
Vanliga SQL Injection-nyttolaster
Sårbar fråga (strängkonkatenering)
OSÄKER - Använd inte i produktion
SELECT * FROM users WHERE username = 'user_input_here' AND password = 'pass123'
Säkra parametriserade alternativ
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]);
Bästa praxis för SQL Injection-förebyggande
1
Använd alltid parametriserade frågor (förberedda satser) istället för strängkonkatenering för SQL.
2
Använd ett ORM (Sequelize, SQLAlchemy, Entity Framework) som genererar parametriserade frågor automatiskt.
3
Tillämpa principen om minsta behörighet: databaskonton bör bara ha de rättigheter de behöver.
4
Använd vitlistor för dynamiska identifierare som kolumnnamn och tabellnamn som inte kan parametriseras.
5
Implementera indatavalidering som ett försvar-på-djupet-åtgärd, men förlita dig aldrig på den som enda skydd.
6
Aktivera WAF-regler (Web Application Firewall) och övervaka loggar för SQL injection-försöksmönster.