Das Einrichten einer Content-Security-Policy (CSP) bei WordPress erfordert einen sorgfältigen, schrittweisen Ansatz, da WordPress und seine Plugins oft Inline-Skripte und -Styles verwenden, die eine strenge CSP blockieren würde.
Schritt 1: Mit Report-Only-Modus starten
Deploye CSP zunächst im Report-Only-Modus, um herauszufinden, was blockiert werden würde, ohne etwas kaputt zu machen:
# .htaccess
<IfModule mod_headers.c>
Header set Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self';"
</IfModule>
Schritt 2: Erforderliche Quellen identifizieren
Prüfe die Entwicklerkonsole deines Browsers auf CSP-Verletzungsberichte. Häufige WordPress-Quellen, die du erlauben musst:
https://fonts.googleapis.comundhttps://fonts.gstatic.com— Google Fontshttps://www.google-analytics.com— Google Analyticshttps://www.googletagmanager.com— Google Tag Manager
Schritt 3: Die Richtlinie deployen
Sobald du alle nötigen Quellen identifiziert hast, wechsle vom Report-Only- in den Erzwingungsmodus:
# .htaccess
<IfModule mod_headers.c>
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self';"
</IfModule>
Nginx-Konfiguration
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;" always;
Mit InspectWP überprüfen
Nach der Implementierung deiner CSP führe einen neuen InspectWP-Scan durch. Der Sicherheitsheader-Bereich zeigt an, ob ein Content-Security-Policy-Header vorhanden ist.