Sie möchten Ihre Website bestmöglich gegen weit verbreitete Angriffe wie Cross-Site-Scripting und Clickjacking schützen? Dann empfehlen wir Ihnen die Verwendung von HTTP Security Header. In diesem Artikel zeigen wir Ihnen, wie diese Header funktionieren und wie Sie sie in Ihre Website integrieren.
Einführung
Wenn Sie mit Ihrem Browser eine bestimmte Website aufrufen, sendet der zuständige Server nicht nur den Inhalt der Seite an Ihr Gerät, sondern auch verschiedene Metadaten über die Website. Teil dieser Metadaten sind die HTTP Security Header. Sie teilen dem Browser des Besuchers mit, wie er die Website aufrufen soll.
Mithilfe der Security Header kann die Website besser gegen unterschiedliche Arten von Angriffen geschützt werden, was wiederum die Sicherheit erhöht.
Arten von Security Header
Es gibt eine ganze Reihe verschiedener Security Header. Jeder Header ist für eine bestimmte Art von Angriff konzipiert. Im Folgenden erklären wir Ihnen die wichtigsten sicherheitsrelevanten Header.
Content-Security-Policy (CSP)
Dieser Header legt fest, welche dynamischen Inhalte (z. B. JavaScript, Bilder, CSS) auf Ihrer Website geladen werden und von welcher URL diese stammen dürfen. Die Content-Security-Policy dient der Abwehr von Cross-Site-Scripting-Angriffen (XSS), bei denen unsicherer oder schädlicher Code auf einer Website ausgeführt wird.
Die folgende Content-Security-Policy bestimmt, dass nur Inhalte geladen werden dürfen, die vom selben Server stammen wie die Website selbst:
Content-Security-Policy: default-src 'self'
X-Content-Type-Options
Dieser Header legt fest, ob der Browser Dateiformate automatisch erraten darf, wenn der Server Ihrer Website diese nicht explizit angibt. Mit dem Setzen dieses Headers wird verhindert, dass der Browser unerwartete und möglicherweise schädliche Dateiformate interpretiert.
Die folgende Richtlinie bestimmt, dass Dateiformate nicht erraten werden dürfen:
X-Content-Type-Options: nosniff
Referrer-Policy
Dieser Header legt fest, welche Informationen über den Ursprung einer Anfrage von Ihrer Website übermittelt werden. Bei einem ausgehenden Link auf Ihrer Website speichert die Ziel-Website standardmässig Ihre Domain als Ursprung der Anfrage. Mit der Referrer-Policy können Sie steuern, welche Informationen an externe Server weitergegeben werden. Dieser Header dient somit in erster Linie dem Datenschutz.
Mit der folgenden Richtlinie werden keine Informationen über den Ursprung einer Anfrage weitergegeben:
Referrer-Policy: no-referrer
HTTP Strict-Transport-Security (HSTS)
Dieser Header teilt dem Browser mit, dass Ihre Website ausschliesslich über eine verschlüsselte Verbindung (HTTPS) aufgerufen werden darf. Dadurch wird verhindert, dass die Kommunikation zwischen Browser und Server abgefangen wird.
Die folgende Richtlinie besagt, dass Ihre Website, einschliesslich aller Subdomains, nur mit HTTPS aufgerufen werden soll. Die Regel gilt ein Jahr lang (31’536’000 Sekunden) und die Domain ist in der Preload-Liste eingetragen (siehe Seite bei Preload-Liste anmelden).
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Frame-Options
Dieser Header verhindert, dass Seiten Ihrer Website in Form eines iFrames in einer anderen Website geladen werden können. Damit werden sogenannten Clickjacking-Angriffe vermieden, bei denen Ihre Inhalte in eine bösartige Website eingebettet werden.
Die folgende Richtlinie legt fest, dass Ihre Inhalte ausschliesslich auf Seiten innerhalb Ihrer Website eingebettet werden dürfen:
X-Frame-Options: SAMEORIGIN
Permissions-Policy
Dieser Header erlaubt es Ihnen, den Zugriff auf bestimmte Funktionen und APIs Ihrer Website festzulegen. Darunter fallen beispielsweise die Verwendung der Kamera (camera
) oder des Mikrofons (microphone
), die Vollbildanzeige (fullscreen
) oder das Abrufen des Standorts (geolocation
). Auf diese Weise werden Angriffe wie XSS und Clickjacking vermieden und gleichzeitig die Datensicherheit Ihrer Besucher erhöht.
Die Permissions-Policy ist immer nach folgendem Muster aufgebaut:
Permissions-Policy: <directive>=(<allowlist>), <directive>=(<allowlist>)
Security Header zur Website hinzufügen
Security Header einbinden
Die HTTP Security Header werden über die Datei .htaccess eingebunden. Wenn Sie ein CMS wie WordPress verwenden, können Sie dafür ein Plugin nutzen (z. B. Yoast SEO, w3 Total Cache). Sie können die Datei aber auch direkt bearbeiten, beispielsweise über den Explorer im Hostpoint Control Panel oder über eine FTP- oder SSH-Verbindung.
Fügen Sie in der Datei dann Ihre HTTP Security Header gemäss folgender Struktur ein:
<IfModule mod_headers.c>
Header set [Name und Wert des Headers]
</IfModule>
Das folgende Beispiel zeigt die Security Header einer WordPress-Website:
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options DENY
Header set Referrer-Policy no-referrer
Header set Content-Security-Policy "base-uri 'self';form-action 'self';frame-ancestors 'self';font-src 'self';"
</IfModule>
Tools zur Prüfung
Mit den folgenden Tools können Sie sich die Security Header Ihrer Website anzeigen lassen:
- Webbkoll: https://webbkoll.5july.net/de/
- Security Headers by Snyk: https://securityheaders.co
Seite bei Preload-Liste anmelden
Wenn Sie den Header für HTTP Strict-Transport-Security (HSTS) hinzugefügt haben, empfehlen wir Ihnen, Ihre Website auch in die Preload-Liste aufnehmen zu lassen. So stellen Sie sicher, dass jegliche Kommunikation mit Ihrer Website schon ab dem ersten Aufruf verschlüsselt wird.
Die Preload-Liste, die von Google Chrome verwaltet wird, wird von den meisten grossen Webbrowsern (z. B. Firefox, Edge, Safari) genutzt. Die Eintragung ist kostenlos.
Weiterführende Informationen
An folgenden Stellen finden Sie weitere hilfreiche Informationen zum Thema:
- https://de.wikipedia.org/wiki/HTTP_Strict_Transport_Security
- https://developer.mozilla.org/de/docs/Web/HTTP/Reference/Headers
Für Supportanfragen verwenden Sie bitte dieses Formular.