Was ist eine Content Security Policy?
Eine Content Security Policy legt fest, welche Inhalte eine Website laden darf. Wie CSP funktioniert, wovor sie schützt und wie man sie ohne Ausfälle einführt.
- Veröffentlicht
- Lesezeit
- 2 Min.
Das Wichtigste in Kürze
- Eine Content Security Policy (CSP) ist eine Liste erlaubter Quellen für Skripte, Stile, Bilder und andere Inhalte.
- Sie begrenzt den Schaden, wenn es jemandem gelingt, fremden Code in eine Seite einzuschleusen.
- Eine CSP ersetzt keine sichere Programmierung, sie ist eine zusätzliche Schutzschicht.
- Die Einführung gelingt am besten zunächst im Beobachtungsmodus.
Das Prinzip: erlauben statt verbieten
Ohne weitere Vorgaben lädt ein Browser alles, was im Quelltext einer Seite steht, unabhängig davon, woher es stammt. Eine Content Security Policy dreht dieses Prinzip um. Die Website teilt dem Browser mit, welche Quellen vertrauenswürdig sind. Alles andere wird nicht geladen oder nicht ausgeführt.
Eine einfache Richtlinie kann zum Beispiel festlegen, dass Skripte nur von der eigenen Domain stammen dürfen: script-src 'self'. Ein Skript von einer fremden Adresse würde der Browser dann nicht ausführen.
Wovor eine CSP schützt
Der wichtigste Anwendungsfall ist Cross-Site-Scripting. Dabei gelingt es Angreifern, eigenen Skriptcode in eine fremde Website einzuschleusen, etwa über ein Kommentarfeld oder eine manipulierte Erweiterung. Eine gut konfigurierte CSP verhindert in vielen Fällen, dass dieser Code ausgeführt wird.
Eine CSP ohne Ausfälle einführen
Viele Websites binden Inhalte von Dritten ein: Schriften, Karten, Videos, Analysewerkzeuge. Eine zu strenge Richtlinie würde diese Inhalte blockieren. Deshalb gibt es den Beobachtungsmodus über den Header Content-Security-Policy-Report-Only. Der Browser meldet dann Verstöße, blockiert aber nichts.
- Bestandsaufnahme: Welche externen Quellen nutzt die Website tatsächlich?
- Richtlinie im Beobachtungsmodus aktivieren und Meldungen auswerten.
- Richtlinie anpassen, bis keine legitimen Inhalte mehr gemeldet werden.
- Richtlinie verbindlich aktivieren und nach Änderungen an der Website erneut prüfen.
Nicht jede CSP ist gleich wirksam
Dass ein CSP-Header vorhanden ist, sagt noch wenig über seine Wirkung. Erlaubt eine Richtlinie mit 'unsafe-inline' beliebige Inline-Skripte, ist der Schutz gegen eingeschleusten Code deutlich reduziert. Moderne Richtlinien arbeiten stattdessen mit Nonces oder Hashes, die einzelne Skripte gezielt freigeben.
Häufige Fragen
Eine CSP ist für nahezu jede Website sinnvoll, besonders aber für Seiten mit Logins, Formularen oder Nutzerinhalten. Der Aufwand hängt davon ab, wie viele externe Dienste eingebunden sind.
Dann werden legitime Inhalte blockiert, etwa eine eingebettete Karte oder ein Skript. Deshalb empfiehlt sich die Einführung im Beobachtungsmodus.