Skip to content

Instantly share code, notes, and snippets.

@Nerdies24
Last active October 28, 2022 16:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nerdies24/97a04dadb1cb68e9be3289420fa0bd74 to your computer and use it in GitHub Desktop.
Save Nerdies24/97a04dadb1cb68e9be3289420fa0bd74 to your computer and use it in GitHub Desktop.
HTTP Sicherheitsheader

Meine am häufigsten verwendeten HTTPs-Sicherheitsheader mit optimalen Einstellungen

Es erfordert, dass Sie die .htaccess-Datei auf Ihrer Website bearbeiten. Die .htaccess-Datei ist eine Serverkonfigurationsdatei, die am häufigsten bei Apache Webservern verwendet wird. Diese liegt im Root Verzeichnis Ihrer WordPress-Installation.

Machen Sie bitte vor dem Hochladen des Codes ein Back-up Ihrer WordPress Installation. (z.B. mit dem Plugin Duplicator)

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=15768000; 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 "no-referrer"
Header set Permissions-Policy "accelerometer=(), autoplay=(self), camera=(), encrypted-media=(), fullscreen, geolocation=(self), gyroscope=(), magnetometer=(), microphone=(), midi=(); payment=(), picture-in-picture=('self'), usb=()"
Header Set Content-Security-Policy: "frame-ancestors 'self'"
</IfModule>

# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Vergessen Sie nicht, Ihre Website zu besuchen, um sicherzustellen, dass alles wie erwartet funktioniert.

Sie können Ihre Konfiguration mit dem kostenlosen Tool Security Headers testen. https://securityheaders.com

Erklärung

Strict Transport Security:
Bei Man in the Middle Angriffen versucht ein Angreifer den Aufbau einer verschlüsselten Verbindung zu verhindern. Der Angreifer kann alle übermittelten Daten mitlesen. Mit Strict Transport Security wird am Beginn der Verbindung eine HTTPS Verschlüsselung erzwungen und die Gefahr solcher Angriffe minimiert.

X-XSS-Protection:
Eigentlich nicht mehr nötig, da er nur noch von älterern Webbrowsern unterstützt wird. Er gilt für mich als Fallback für ältere Browser. Ich verwende ihn dennoch. Im obingrn Fall wird die Webseite nicht vom Webbrowser gerendert bzw. ausgeführt, sofern ein XSS-Angriff festgestellt wird. Besser wäre mitlerweile eine Content-Security-Policy (CSP).

X-Content-Type-Options
Schützt vor dem einschleusen anderer Formate, insbesondere, wenn dem Browser das Format (HTML, PNG etc.) nicht mitgeteilt wird. Das kann echt krassen Schaden anrichten. Durch den Befehl nosniff werden die Browser daran gehindert, herauszufinden, welcher Dateityp sich hinter unbekannten Dateien verbirgt.

X-Frame-Options
Verhindert, dass die Seite in einem Frame einer anderen Seite geladen werden kann. Nützlich bei Content-Diebstahl. SAMEORIGIN erlaubt die Integration auf der eigenen Website.

Referrer-Policy
Bezüglich Datenschutz interessant. Der Browser soll einer Seite mitteilen, von welcher Seite der Benutzer gekommen ist. no-referrer verhindert dies.

Permissions-Policy
Permission Policy-Header steuert, welche Browser-Funktionen verwendet werden können.

Content-Security-Policy
Müssen individuell für Ihre Website ausgewählt und getestet werden. self lässt zu, dass eine Seite gerahmt wird, beispielsweise innerhalb eines Iframes, aber nur von derselben Website. Dies gilt beispielweise für die Einbettung von Vimeo- oder YouTube Videos. Lassen Sie im Zweifel diesen Bereich aus.

Dieser Gist gehört zur Facebook Gruppe: https://www.facebook.com/groups/deinwordpressprojekt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment