Website sichern mit Content Security Policy und Google Analytics
Lassen Sie Fenster und Türen geöffnet wenn Sie das Haus verlassen?Content Security Policy (CPS) Response Header sind eine einfache Methode um Webseiten gegen Angriffe wie Cross Site Scripting (XSS) abzusichern.
Die nachträgliche Integration in eine gewachsene IT-Infrastruktur kann sich jedoch als eine schwer zu lösende Aufgabe erweisen.
Zum Glück kann man Content Security Policy Regeln im Reporting-Modus integrieren. In Kombination mit Google Analytics kann man dann mögliche Probleme und zukünftige Verstöße direkt auswerten.
Warum ist die Content Security Policy Integration schwierig?
- Die Dokumentation von verwendeten Web-Techniken fehlt
- Die Prüfung der CSP-Einstellungen gleicht der Suche nach der „Stecknadel im Heuhaufen“
- Die Integration von Content Security Policies in (bestehende) Webseiten ist mit Kosten verbunden
- Es ist nicht bekannt wo in Webprojekten durch CPS blockierte Techniken genutzt werden
- Technische Einschränkungen bei Projektstart werden als Blockade und nicht als Hilfe angesehene
Zeilenumbrüche im Response-Header und http2 Protokoll – Firefox kann Seiten nicht laden
Zeilenumbrüche im CSP-Response Header führen Firefox, selbst die aktuellste Version, zum Lade-Abbruch jeder Webseite! Mehr dazu unter fxsitecompat.com und bei bugzilla.mozilla.org
Webseiten sind – unabhängig ob kommerziell oder privat genutzt – die (meist) am stärksten genutzte Kontaktpunkte zwischen potentiellen Kunden und Unternehmen.
Die Sicherheit von Webseiten wird aber oft stark vernachlässigt, da selbst einfachste Mittel durch den ständigen Fortschritt der Browser- und Server-Technik nicht immer im Fokus von Entwicklern liegen.
- Website-Entwickler fokussieren sich meist auf Browser oder Server
- Unternehmen nehmen Back- und Front-End oft nicht als Einheit wahr
- Agenturen werden oft nur mit Front-End Entwicklung beauftragt
- Bestimmte IT-Bereiche werden aus Sicherheitsgründen von internen oder Dritten verwaltet
Content Security Beispiel-Fehler
YouTube iframe geblockt via CSP-Regel
Rechts ein YouTube Video das durch die CSP-Regeln nicht geladen wurde. Der Browser sendet via POST-Request an eine Reporting-URL den Payload im oben gezeigten Bild und gibt folgende Fehlermeldung in der Entwickler-Konsole aus.
Refused to frame 'https://www.youtube-nocookie.com/embed/pocsv39pNXA?rel=0' because it violates the following Content Security Policy directive: "frame-src 'self' maps.google.com pastebin.com".
Wie Content Security Policy Regeln integrieren?
1. Content-Security-Policy header prüfen
2. Content Security Policy Response Header generieren
Content Security Nginx-Konfiguration
Beispiel add_header Direktive für WordPress
Hier eine Beispiel-Konfiguration einer Content Security Policy für WordPress unter Nginx diese häufig genutzte Domains bereits enthält. Das Nginx-Konfigurations-beispiel enthält folgende Domains:
- bootstrapcdn.com
- google-analytics.com
- googletagmanager.com
- googleapis.com
- maps.google.com
- google.com
- gstatic.com
- gravatar.com
- w.org
- pastebin.com
Anmerkung: Auf unsafe-Anweisungen wie ‚unsafe-inline‘ ‚unsafe-eval‘ sollte verzichtet werden da man Cross-Site-Scripting (XSS) sonst wieder zulässig macht! Viele WordPress-Themes und Plugins nutzen jedoch inline-JavaScript.
Verstöße gegen CSP-Richtlinien an Google Analytics senden (Work in Progress!)
Mit Google Analytics Server-PHP-Reporting die CSP-Richtlinien überprüfen
Der folgende PHP-Code zum Senden einen Google Analytics Events ausgelöst durch den POST-Request des Browsers bei Verstößen gegen eine Content Security Policy ist noch nicht fertig gestellt.
CSP-Report PHP auf Pastebin
Mike Wiegand
Zertifizierter Online Projekt-Manager nach GPM IPMA
Website Specialist @Brady, Seton Devision
Freelancer und Online Projektmanager mit Liebe für`s Detail
Sie suchen Unterstützung bei der Integration von Content Security Policies, CSP-Reports in Google Analytics oder Web-Projekten?
[contact-form-7 id=“200″ title=“Kontakt minimal“]