Notizen zur Content Security Policy (CSP)

Vor einer Weile stolperte ich über Webbkoll, ein Tool der schwedischen NGO Dataskydd.net, mit dem man die Performance einer Webseite bzgl. Datenschutz und Datensicherheit prüfen kann ((Googles CSP Evaluator ist auch ganz nützlich in dem Kontext)). Kann ja nicht schaden, dachte ich mir so – prüfte und stellte fest, das ich noch einiges verbessern konnte.

Wie man es halt gerne so macht, habe ich recht unbedarft sinnvoll klingende Content Security Policy Regeln in den Header und die .htaccess-Datei meines Blogs eingeführt. Danach war alles einigermaßen okay bewertet und ich war happy.

<Spongebob>Several months later</Spongebob>

Und dann stellte ich fest, dass es etwas zu sicher ist und ich die anderen Domains, die auf den Blog leiten vom Laden diverser Inhalte ausgeschlossen habe ((In gewisser weiße ironisch, dass netzgeschaedigt.de nur eine kaputte Version des Blogs anzeigte.)).

Nun also auf in den Kampf. Oberflächlich betrachtet schien eine Freischaltung für die Domains geholfen zu haben. Ein Blick in die Developer-Konsole offenbart allerdings: da wird noch eine ganze Menge blockiert. Allerdings helfen die Fehlermeldungen in der Firefox-Konsole nicht wirklich weiter. Hier bietet Chrome ein paar mehr Infos:

Refused to apply inline style because it violates the following Content Security Policy directive

Die Verursacher sind gefunden: Inline-CSS bzw. -Scripte.

Und folgende Lösungen helfen gegen das Problem:

  • Aufweichen der Content Security Policy, und Hinzufügen von 'unsafe-inline' für script-src / style-src;
  • Hinzufügen von hash-Werten für jede Datei, die Inline-CSS oder JS ausführen darf;
  • Hinzufügen einem erlaubten Attributs ('nonce-'), welches in allen Inline-Elementen eingefügt wird;
  • oder alle Inline-Elemente auslagern in separate Dateien.

Da die CSP für frame-ancestors nicht über <meta> übermittelt werden kann, überlasse ich die CSP jetzt komplett der PHP-header()-Funktion:

header("Content-Security-Policy: default-src 'none'; [...] )

Aber so richtig klappt das nicht. Vllt. muss ich doch auf ein Plugin-Ausweichen, dass WordPress mit einer funktionierenden, besseren CSP ausstattet – und Multi-Domain-kompatibel ist.

Tags: ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert