Inhaltsverzeichnis

Security Headers

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:

Per .htaccess

<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=31536000"
  Header set X-Frame-Options "SAMEORIGIN"
  Header set X-Content-Type-Options "nosniff"
  Header set Referrer-Policy "strict-origin" #optional, funktioniert nicht mit Warenkorb und WP 6 Papierkorb*
  Header set Referrer-Policy "strict-origin-when-cross-origin" #funktioniert mit Papierkorb in WP 6
  Header set Content-Security-Policy "default-src 'self'; font-src 'self'; img-src https: 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; "
</IfModule>

:!: 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 …)

:!: Konflikt mit dem Plugin UpdraftPlus, deshalb letzte Zeile ersetzen durch:

  Header set Content-Security-Policy "style-src 'self' 'unsafe-inline'; object-src 'none'; frame-ancestors 'self'; base-uri 'self'; form-action 'self' ;"

* wenn gesetzt, leitet jede Lösch-Aktion im WordPress-Backend auf die Startseite des Frontends um. Das beeinträchtigt nicht die Funktion, aber die Usability.

Für WordPress per PHP

:!: 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

Für TYPO3 im Setup

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'
}

Ab TYPO3 12

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
}