Per .htaccess:
# Block WordPress xmlrpc.php requests
<Files "xmlrpc.php">
Require all denied
</Files>
Website überprüfen mit https://observatory.mozilla.org/ oder https://www.experte.de/security-check
Siehe auch Content Security Policy — TYPO3 Explained
Der Definitionsort, aber auch die einzelnen Einstellungen der Content Security Policy (CSP) hängen stark vom verwendeten System ab. Beispiele:
<IfModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000; preload" Header set X-Frame-Options "SAMEORIGIN" Header set X-Content-Type-Options "nosniff" Header set X-XSS-Protection "1; mode=block" Header set Referrer-Policy "strict-origin" Header set Content-Security-Policy "style-src 'self' 'unsafe-inline'; object-src 'none'; frame-ancestors 'self'; base-uri 'self'; form-action 'self';" <If "%{REQUEST_URI} !~ m#^/(wp-admin|wp-login\.php)#"> Header add Content-Security-Policy "default-src 'self'; script-src 'self'; img-src 'self' data:; font-src 'self'; " </If> </IfModule>
Header set Referrer-Policy „strict-origin“: Konflikt mit Warenkorb und WP 6 Papierkorb
Konflikt mit dem Plugin Autoptimize und der Optimierung von Js und Css.
Konflikt mit dem Plugin WP Fastest Cache und der Einstellung „Du kannst die Größe von CSS-Dateien verringern“! (Das Plugin überschreibt mit jeder neuen Einstellung die .htaccess …)
Die Implementierung in der functions.php des Themes scheint aktuell nicht mehr zu funktionieren, zumindest wenn man mit Code-Optimierern wie Autoptimize und WP Fastest Cache arbeitet.
if (!empty($_SERVER['HTTPS'])) { function en_hsts_header($headers) { $headers["Strict-Transport-Security"] = "max-age=31536000"; $headers["X-Frame-Options"] = "SAMEORIGIN"; $headers["X-Content-Type-Options"] = "nosniff"; $headers["Referrer-Policy"] = "strict-origin"; $headers["Content-Security-Policy"] = "default-src 'self'; object-src 'none'; frame-ancestors 'self'"; return $headers; } add_filter('wp_headers', 'en_hsts_header'); }
s.a. andere sicherheitsrelevante Einstellungen in der functions.php und überflüssige Tags im WordPress-HTML-HEAD entfernen
config.additionalHeaders { 10.header = strict-transport-security:max-age=31536000 20.header = X-Frame-Options:SAMEORIGIN 30.header = X-Content-Type-Options: nosniff 50.header = Referrer-Policy:strict-origin 60.header = Content-Security-Policy: default-src 'self'; font-src 'self'; object-src 'none'; form-action 'none' }
Im Install-Tool bei dem Einstellungen [SYS][features][security.frontend.enforceContentSecurityPolicy] = true setzen und in der Datei config.typoscript folgende Zeilen ergänzen:
config.additionalHeaders { 100.header = strict-transport-security:max-age=31536000 200.header = X-Frame-Options:SAMEORIGIN }