Content Security Policy (CSP) verstehen und anwenden
Content Security Policy (CSP) ist ein wesentliches Sicherheitsmerkmal, das hilft, eine Vielzahl von Web-Sicherheitsanfälligkeiten zu mindern, einschließlich Cross-Site Scripting (XSS) und Dateninjektionsangriffen. Indem Webentwickler deklarieren können, welche Quellen der Browser zum Laden von Inhalten zulassen sollte, bietet CSP eine robuste Verteidigung gegen die Injektion bösartiger Inhalte und verbessert die Sicherheit von Webanwendungen erheblich.
Was ist CSP und sein Zweck?
CSP wird implementiert, indem der HTTP-Header Content-Security-Policy
vom Webserver gesendet oder ein äquivalenter <meta>
-Tag innerhalb des HTML einer Seite eingefügt wird. Diese Richtlinie hilft dabei, vertrauenswürdige Quellen und Domains zu spezifizieren, und verhindert so, dass Browser potenziell bösartige Assets laden. Das Hauptziel von CSP ist es, XSS-Angriffe zu verhindern, indem die Quellen eingeschränkt werden, von denen Inhalte wie Skripte, Stile und Bilder geladen werden können. Es blockiert effektiv Inline-Skripte und eval
-ähnliche Funktionen, die häufige Angriffsvektoren für XSS darstellen.
Die Notwendigkeit für CSP ergibt sich aus der sich entwickelnden Komplexität von Webangriffen und bietet eine zusätzliche Sicherheitsebene, die traditionelle Sanitierungstechniken ergänzt. Indem kontrolliert wird, welche Inhaltsquellen ein Browser laden kann, können Entwickler ihre Anwendungen vor Angreifern schützen, die Schwachstellen ausnutzen, um bösartige Skripte auszuführen.
Wie man mit report-to
testet
Das Testen Ihrer CSP-Implementierung ist entscheidend, um sicherzustellen, dass die definierten Richtlinien nicht mit der Funktionalität Ihrer Website interferieren und gleichzeitig die beabsichtigten Sicherheitsvorteile bieten. Die report-to
-Direktive ist ein moderner Ansatz für die Berichterstattung über CSP-Verletzungen, der darauf abzielt, die veraltete report-uri
-Direktive zu ersetzen. Sie ermöglicht es dem Browser, Berichte über CSP-Verletzungen an einen bestimmten Endpunkt zu senden und bietet Einblicke in Probleme mit der Richtlinie.
Um die report-to
-Direktive zu nutzen, ist es notwendig, eine Berichtsgruppe in Ihrem CSP-Header zu definieren:
Content-Security-Policy: default-src 'self'; report-to /csp-verletzungsbericht-endpunkt
Zusätzlich müssen Sie die Berichtsgruppe im Report-To
-HTTP-Header definieren:
Report-To: {"group":"default","max_age":10886400,"endpoints":[{"url":"https://ihredomain.com/report-csp-violations"}],"include_subdomains":true}
Diese Einrichtung weist den Browser an, POST-Anfragen im JSON-Format mit Details zur CSP-Verletzung an die angegebene URL zu senden, was eine kontinuierliche Überwachung und Verfeinerung Ihrer CSP-Strategie ermöglicht.
CSP-Direktiven und Beispiele
Die Flexibilität von CSP zeigt sich in seiner Vielzahl von Direktiven, die jeweils darauf ausgerichtet sind, spezifische Inhaltsarten zu kontrollieren. Unten sind Schlüsseldirektiven mit Beispielen aufgeführt, um deren Verwendung zu veranschaulichen:
- default-src: Legt eine Standardrichtlinie für das Laden von Ressourcen wie Skripte, Stile, Bilder, Schriftarten, Medien, Rahmen usw. fest.
Content-Security-Policy: default-src 'self';
- script-src: Gibt gültige Quellen für JavaScript an, was entscheidend ist, um XSS-Angriffe zu verhindern.
Content-Security-Policy: script-src 'self' https://apis.example.com;
- style-src: Bestimmt, welche CSS-Stylesheets zulässig sind.
Content-Security-Policy: style-src 'self' 'unsafe-inline';
Hinweis: Die Verwendung von
'unsafe-inline'
erlaubt Inline-Styles, was für einige Anwendungen notwendig sein kann, aber die Sicherheit beeinträchtigt.
- img-src: Definiert zulässige Quellen für Bilder.
Content-Security-Policy: img-src 'self' https://bilder.example.com;
- connect-src: Beschränkt die Ursprünge, zu denen eine Verbindung hergestellt werden kann (über XHR, WebSockets und EventSource).
Content-Security-Policy: connect-src 'self' https://api.example.com;
- font-src: Gibt an, woher Schriftarten geladen werden können.
Content-Security-Policy: font-src 'self' https://schriftarten.example.com;
- object-src: Steuert gültige Quellen für die Elemente
<object>
,<embed>
und<applet>
.
Content-Security-Policy: object-src 'none';
- report-to: Gibt an, wohin Berichte über Richtlinienverletzungen gesendet werden sollen.
Content-Security-Policy: default-src 'self'; report-to /csp-violation
Die Verwendung dieser Direktiven ermöglicht Entwicklern, die Sicherheitsrichtlinien ihrer Anwendungen fein abzustimmen, um sicherzustellen, dass nur vertrauenswürdige Inhalte ausgeführt oder angezeigt werden. Es ist von entscheidender Bedeutung, Ihre CSP gründlich zu testen, um zu verhindern, dass legitimer Inhalt oder Funktionen auf Ihrer Website blockiert werden. Da sich Sicherheitsbedrohungen weiterentwickeln, ist es notwendig, Ihre CSP regelmäßig zu aktualisieren und anzupassen, um neuen Schwachstellen entgegenzuwirken und Ihre Webanwendungen zu schützen.