Wissen von A bis Z

Cross-Site Scripting (XSS)

XSS ist wie ein ungebetener Gast, der heimlich Post-its in Ihr Gästebuch klebt, die jeden Leser dazu bringen, ihm sein Portemonnaie zu geben.

Cross-Site Scripting (XSS) ist eine Klasse von Web-Schwachstellen, bei denen ein Angreifer schädlichen Code — typischerweise JavaScript — in eine Webanwendung einschleust, der anschließend im Browser anderer Nutzer ausgeführt wird. XSS unterscheidet drei Hauptformen: Reflected XSS (Payload kommt mit einer Anfrage zurück und wird sofort ausgeführt), Stored XSS (Payload wird auf dem Server gespeichert und bei jedem Aufruf an Nutzer ausgeliefert) und DOM-based XSS (Payload manipuliert direkt das DOM, ohne dass der Server die schädlichen Inhalte zurückgibt).

Eingesetzt werden XSS-Angriffe zum Diebstahl von Session-Cookies und Tokens, zur Übernahme von Benutzerkonten, zur Manipulation von Formularen, zum Ausführen von CSRF-Angriffen "aus dem Browser des Opfers heraus", zur Verteilung von Malware oder zur Phishing-Imitation legitimer Anwendungsoberflächen. Zur Prävention setzen Webentwickler auf konsequentes Output-Encoding, Templating-Engines mit Auto-Escaping (Razor, Blazor, Angular, React, Vue, Jinja2, Twig), Content Security Policy (CSP) mit Nonces oder Hashes, Trusted Types (Web-Standard zur Eliminierung DOM-basierter XSS-Senken) und sicheren Frameworks, die unsichere DOM-APIs einkapseln.

Der Einsatzzweck der Auseinandersetzung mit XSS liegt in seiner anhaltenden Präsenz in den OWASP Top 10 und in CWE-25-Listen. Trotz jahrzehntelanger Aufklärung und besserer Frameworks bleibt XSS eine der häufigsten Schwachstellenklassen — insbesondere in Legacy-Anwendungen, in Custom-Templating ohne Auto-Escape und in Frontend-Code, der HTML aus Strings konstruiert. Effektiver Schutz erfordert eine Kombination aus sicherem Coden, defensiven HTTP-Headern und kontinuierlicher Tests.

Historisch wurde der Begriff "Cross-Site Scripting" im Jahr 2000 vom Microsoft-Security-Team geprägt; ein viel zitierter Bericht war "CERT Advisory CA-2000-02" zur Häufigkeit dieser Klasse. Mit der zunehmenden Verbreitung clientseitiger JavaScript-Frameworks ab 2010 hat sich auch die DOM-basierte XSS-Variante stärker in den Fokus gerückt; Trusted Types (Google, ab 2019) und CSP Level 3 sind moderne Antworten auf diese Entwicklung. Browser-Architekten haben über Jahre versucht, XSS strukturell schwerer zu machen — durch Site Isolation, COOP/COEP, das Aussterben proprietärer "XSS-Filter" (Microsoft Edge, IE) zugunsten von CSP und durch zunehmend strenge Default-Verhaltensweisen in modernen Frameworks.

Der Begriff "Cross-Site Scripting" war ursprünglich enger gefasst — er beschrieb nur Szenarien, in denen Skripte aus einer Drittseite (cross-site) eingeschleust wurden. Heute wird er auch für Same-Site-Angriffe verwendet, in denen Eingaben aus derselben Anwendung als Payload missbraucht werden. Diese semantische Ausdehnung hat dazu geführt, dass das Akronym "XSS" (statt "CSS", das ja Cascading Style Sheets meint) historisch eingeführt wurde.

Zurück