Zum Inhalt springen

Cross-Site Scripting (XSS)

Bei XSS wird fremder Inhalt zu ausführbarem Code im Browser. Entscheidend ist, wie eine Anwendung Eingaben in ihre Seiten übernimmt.

Auch bekannt alsXSS
IT-Sicherheit

Cross-Site Scripting, kurz XSS, bezeichnet einen Angriff, bei dem fremder Code im Browser im Kontext einer betroffenen Website ausgeführt wird. Die Anwendung übernimmt nicht vertrauenswürdige Daten so in eine Seite, dass der Browser sie als ausführbaren Inhalt behandelt. Der Code kann beispielsweise die angezeigte Seite verändern oder mit den Rechten der angemeldeten Person Anfragen stellen.

Ein Kommentar im Projektportal

Ein fiktives Projektportal speichert Kommentare im Feld noteText und zeigt sie später anderen Teammitgliedern. Gedacht ist das Feld für normalen Text. Wird sein Inhalt ungeprüft als HTML eingesetzt, können dafür geeignete Eingaben ausführbaren Inhalt einschleusen. Das Speichern in der eigenen Datenbank macht einen Kommentar für die spätere Ausgabe nicht vertrauenswürdig. Auch Werte aus angebundenen Systemen müssen passend zum Ausgabeort behandelt werden.

Soll der Kommentar nur Text sein, verwendet die Anwendung eine dafür geeignete Textausgabe oder die sichere Standardausgabe ihres Frameworks. Soll bewusst formatiertes HTML erlaubt sein, braucht es eine dafür gepflegte Bereinigung mit festgelegten erlaubten Inhalten.

Der Ausgabeort bestimmt den Schutz

MDN und OWASP unterscheiden die Behandlung von Text, HTML, Attributen und anderen Ausgabekontexten. Eine für normalen HTML-Text passende Kodierung ist keine universelle Absicherung für JavaScript oder URLs. Eingabeprüfung allein ersetzt den Schutz bei der Ausgabe nicht.

Eine Content Security Policy kann zusätzlich begrenzen, welcher Code ausgeführt wird. Sie ersetzt weder sichere Ausgabestellen noch die erforderliche HTML-Bereinigung. Die Portalgeschichte veranschaulicht diese Abgrenzung; sie beschreibt keinen durchgeführten Sicherheitstest.

Quellen