SQL-Injection und XSS: Wie die zwei klassischen Injection-Lücken entstehen und verhindert werden
10. September 2026
SQL-Injection (SQLi) und Cross-Site-Scripting (XSS) sind die zwei ältesten und häufigsten Web-Schwachstellen. Sie wirken an verschiedenen Stellen, teilen aber eine Ursache: nicht vertrauenswürdige Nutzereingaben, die als Code/Query statt als Daten interpretiert werden. Diese gemeinsame Wurzel zu verstehen, klärt auch die richtige Abwehr.
SQL-Injection
SQLi entsteht, wenn Nutzereingaben direkt in eine Datenbankabfrage eingebettet werden. Baut die App:
"SELECT * FROM users WHERE email = '" + eingabe + "'"
ändert ein Angreifer mit ' OR '1'='1 die Logik der Abfrage — umgeht die Authentifizierung oder liest Daten aus. Die Auswirkung ist schwer: Lesen/Ändern von Daten, teils Codeausführung.
Abwehr — parametrisierte Abfragen: Die Ursache liegt darin, die Eingabe in den Abfragetext zu verketten. Parametrisierte Abfragen (Prepared Statements) tragen die Eingabe als separate Daten, die die Datenbank nie als Code interpretiert:
SELECT * FROM users WHERE email = ? -- Eingabe als separater Parameter gebunden
Ergänzende Schichten: ein Datenbankkonto mit geringsten Rechten, Allowlist-Eingabevalidierung und die sicheren APIs von ORMs.
Cross-Site-Scripting (XSS)
XSS ist, wenn die Eingabe eines Angreifers als Skript in eine Seite gelangt und das JavaScript des Angreifers im Browser des Opfers ausführt. Drei Haupttypen:
- Reflected: Eingabe spiegelt sich sofort in der Antwort (z. B. Suchseite).
- Stored: Eingabe wird gespeichert und später anderen Nutzern serviert (z. B. Kommentarfeld) — am gefährlichsten.
- DOM-based: die Spiegelung geschieht im clientseitigen JavaScript.
Auswirkung: Diebstahl des Sitzungs-Cookies (ohne HttpOnly), Aktionen im Namen des Nutzers, Phishing, Defacement.
Abwehr — kontextbewusste Ausgabekodierung: Die Ursache wird behoben, indem Nutzerdaten je nach Kontext (HTML-Body, HTML-Attribut, JavaScript, URL) kodiert werden. Zusätzlich begrenzt eine Content-Security-Policy die Auswirkung von XSS, und HttpOnly verhindert Cookie-Diebstahl per Skript. Moderne Frameworks kodieren standardmäßig; nutzen Sie Kodierung umgehende Pfade vorsichtig.
Die gemeinsame Lehre
Beide löst dasselbe Prinzip: Daten aus Code-Kontexten heraushalten. Für SQLi leisten das parametrisierte Abfragen, für XSS kontextbewusste Ausgabekodierung.
Quellen: OWASP SQL Injection Prevention, OWASP XSS Prevention, OWASP Top 10: Injection.
Zeigt Ihre Site Anzeichen von Reflected XSS oder Injection? Die Active Verification von CyberTestify prüft das deterministisch mit harmlosen Prüfungen an erkannten Eintrittspunkten.