←
03 — SQL-Injection
1
Was ist SQL-Injection?
Wenn der Programmierer den Login so baut:
schlechter Code
SELECT * FROM users
WHERE name = '$user' AND pw = '$pass'...und der Hacker gibt als Name ' OR 1=1 -- ein, wird daraus:
SELECT * FROM users
WHERE name = '' OR 1=1 --' AND pw = '...'1=1 ist immer wahr → Datenbank gibt den ersten User zurück (oft den Admin). Login geknackt, ohne Passwort.
2
🎮 Hack den Login
Probier den Login mit normalem Namen (geht nicht), und dann mit ' OR 1=1 -- als Name.
⚠ Unsicherer Login
3
Was der Hacker dann sieht
Mit dem Tool sqlmap dumpt er die ganze Datenbank in 30 Sekunden:→ Alle User, alle Passwörter (auch gehasht knackbar), alle Bestellungen, alle Karten.
sqlmap -u "shop.de/login" \
--data="user=*&pass=x" \
--dump4
🔍 Scanne deine echte Seite
Wir senden harmlose SQL- und XSS-Probes an Formulare auf deiner Domain.
🔍 Live-Scan: SQL-Injection & XSS
Sendet harmlose SQL-/XSS-Probes an gefundene Formulare. ⚠ aktive Tests, nur eigene Domain.
5
✅ Wie schützt du dich?
Mit Prepared Statements – die DB versteht User-Eingabe als Wert, nicht als Code:
sicherer Code
db.query(
"SELECT * FROM users WHERE name=$1 AND pw=$2",
[user, pass] // <-- als Parameter
);Moderne Backends (z.B. Supabase, Prisma, Drizzle) nutzen automatisch Prepared Statements. SQL-Injection ist dort praktisch unmöglich, solange du keinen rohen SQL-String mit User-Input bastelst.
Test: Tippe in dein Such-Feld auf deiner Seite
' OR 1=1 --. Kommen alle Produkte oder ein DB-Fehler? → Lücke.