XSS-Bremse Content Security Policy

Cross-Site-Scripting (XSS) ist eine der größten Plagen, mit denen Webmaster zu kämpfen haben. Der neue Standard "Content Security Policy" soll endlich Abhilfe schaffen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 14 Min.
Von
  • Hendrik Brummermann
Inhaltsverzeichnis

Moderne Webanwendungen akzeptieren allerhand Benutzereingaben. Ein prominentes Beispiel ist eine Suchfunktion, mit der man etwa das Warensortiment eines Onlineshops durchsuchen kann. Häufig wird die Eingabe auf der Ergebnisseite vom Server zurückgegeben – "Ihre Suche nach Suchbegriff ergab 7 Treffer". Hat der Webentwickler nicht aufgepasst, können Cyber-Ganoven auf diese Weise eigenen Code in die Seite einschleusen. Dann führen etwa Suchbegriffe wie <script>alert("Pwned!")</script> dazu, dass der Browser die Eingabe als Skript interpretiert und im Kontext der Seite ausführt. Deshalb müssen die unvorhersehbaren Benutzereingaben maskiert werden.

Leider ist es bei komplexen Webanwendungen eher die Regel als die Ausnahme, dass die Maskierung an irgendeiner Stelle vergessen wurde oder lückenhaft ist. Das XSS-Cheat-Sheet zeigt eindrucksvoll, auf wie viele Tricks böse Buben zurückgreifen können, um eigene Inhalte in fremde Sites zu schmuggeln. XSS ist ein ernstzunehmendes Sicherheitsrisiko: Angreifer können so etwa Cookies abgreifen, Schadcode verbreiten oder auch Phishing-Formulare in die verwundbare Webseite einbauen. Der Fantasie der Cyber-Kriminellen sind kaum Grenzen gesetzt.

Mit Hilfe einer Content Security Policy legt der Webmaster fest, welche Ressourcen der Browser beim Abruf der Seite laden darf.

Die Content Security Policy (kurz CSP) verhindert XSS, indem sie den Einsatz von Skripten im Quellcode der Seite, den sogenannten Inline-Skripten, verbietet. Sie werden stattdessen in eigene Dateien ausgelagert, wo man sie wesentlich besser im Griff hat. Anschließend legt man über eine Whitelist fest, von welchen Quellen der Browser beim Aufruf der Seite Skripte nachladen und ausführen darf – und ob überhaupt. Doch damit sind die Möglichkeiten der CSP noch längst nicht ausgeschöpft: Es gibt Whitelists für Frames, Bilder, Medien, Plug-ins, CSS-Dateien und Schriftarten. Außerdem kann man festlegen, mit welchen Servern der Browser über XMLHttpRequest, WebSocket und Server-Sent Events (EventSource) sprechen darf.