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.
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
Verwandte Begriffe
- FrontendDas Frontend bildet die Bedienoberfläche einer Anwendung. Gute Rückmeldungen im Browser ersetzen keine verbindliche Prüfung auf dem Server.
- JavaScriptJavaScript ist eine Programmiersprache für Anwendungslogik, im Browser und auch außerhalb davon. Sie hat eine andere Aufgabe als HTML oder CSS.
- HTMLHTML beschreibt Struktur und Bedeutung von Webinhalten. Es unterscheidet beispielsweise Überschriften, Tabellen und Eingabefelder.
- DatenminimierungDatenminimierung begrenzt personenbezogene Daten auf das, was für einen festgelegten Zweck angemessen, relevant und erforderlich ist.
- DatenaufbewahrungsregelEine Datenaufbewahrungsregel legt Zweck, Beginn, Dauer und Ende der Speicherung fest. Löschaufträge und Kopien müssen technisch berücksichtigt werden.
- Envelope EncryptionEnvelope Encryption trennt den Schlüssel für die Daten vom Schlüssel, der diesen schützt. Verschlüsselte Datei und verpackter Datenschlüssel gehören zusammen.
Ihr Vorhaben mit ASES
Beschreiben Sie uns Ihr Vorhaben. Wir melden uns mit einer ersten Einschätzung.