Freibadstraße 30, München, Deutschland
(+49) 0176 80220822
info@khoa-nguyen.de

HTTP Security Header

Im Hinblick auf sichere Webseiten tauchen in diesem Kontext immer wieder die http Security Headers. Als zusätzliche Sicherheitsbarrieren sind sie optional, sind aber bei richtiger Anwendung in bestimmten Kontexten aber sehr empfehlenswert. In diesem Post erkläre euch, was man darunter versteht, wie man es testet und wie sie in der Praxis aufgebaut werden.

Was sind http Security Headers?

HTTP Security Headers bzw.auf deutsch HTTP-Sicherheitsheader sind zusätzliche Mechanismen, um Webseiten gegen verschiedene Arten von Angriffen zu schützen, indem sie zusätzliche Sicherheitsschichten auf die HTTP-Kommunikation zwischen dem Client (Browser) und dem Server hinzufügen.

Es gibt mehrere Arten von HTTP-Sicherheitsheadern, die jeweils eine spezifische Bedrohung abwehren. Hier sind die häufigsten Sicherheitsheader im Überblick, die für den Einsatz empfehlenswert sind.

  1. Content-Security-Policy (CSP): Mit diesem Header wird festgelegt, welche Ressourcen auf einer Seite geladen werden dürfen. Dies hilft, Cross-Site-Scripting (XSS)-Angriffe zu verhindern, indem es verhindert, dass unsichere oder schädliche Skripte auf der Seite ausgeführt werden.
  2. X-Content-Type-Options: Dieser Header steuert, ob der Browser MIME-Typen automatisch erraten darf, wenn der Server nicht explizit den MIME-Typ der Datei angibt. Durch das Aktivieren dieses Headers wird verhindert, dass der Browser unsichere oder unerwartete Dateitypen interpretiert, was wiederum Cross-Site-Scripting-Angriffe verhindert.
  3. Referrer-Policy: Mit diesem Header wird festgelegt, welche Informationen über den Ursprung einer Anforderung an eine Website gesendet werden. Dadurch wird verhindert, dass vertrauliche Informationen wie persönliche Daten und Anmeldeinformationen aus Verweisen (Referrern) ausgelaufen werden.
  4. Strict-Transport-Security (HSTS): Dieser Header zwingt den Browser dazu, alle zukünftigen Anfragen an die Website über HTTPS zu senden, anstatt über das unsichere HTTP-Protokoll. Dadurch wird Man-in-the-Middle-Angriffen vorgebeugt, bei denen ein Angreifer versucht, die Kommunikation zwischen dem Browser und dem Server abzufangen.
  5. X-Frame-Options: Dieser Header verhindert, dass eine Website in ein iFrame eingebettet wird. Dadurch wird Clickjacking-Angriffen vorgebeugt, bei denen ein Angreifer eine bösartige Website in einem iFrame auf einer legitimen Website platziert, um Nutzer dazu zu bringen, auf versteckte Schaltflächen zu klicken.
  6. Permission-Policy: Dieser Header ermöglicht es einem Website-Administrator, die Zugriffsrechte für bestimmte Funktionen und APIs auf der Website zu definieren. Durch das Definieren der Berechtigungen können die Risiken von Cross-Site-Scripting-Angriffen, Clickjacking und anderen Arten von Angriffen verringert werden.
  7. X-XSS-Protection: Dieser Header aktiviert oder deaktiviert den eingebauten XSS-Schutz im Browser. Wenn der Schutz aktiviert ist, kann der Browser versuchen, unsichere Skripte automatisch zu blockieren.

Ich empfehle euch, http Security Headers schon zu Beginn der Webentwicklung und somit ganz am Anfang einer Webseitengestaltung aufzubauen. Natürlich können Sie jederzeit nachträglich eingebaut werden. Im folgenden Abschnitt wird beschrieben, wie sie in der Praxis eingebaut werden.

Wie baue ich http Security Header ein?

Nehmen wir als Beispiel Webseiten, die auf Apache Servern laufen. Denn da sind Editierung in .htaccess Dateien möglich. WordPress als Klassiker unter den Content Management Systemen dient hier als exemplarisches Beispiel.

Um http Security Header einzubauen, wird der Zugriff zur .htaccess Datei benötigt. Alternativ lassen sie sich auch über den Dashboard über Plugins wie Yoast SEO, wo der htaccess Bereich integriert ist. Auch über Plugins lassen sie sich einbauen.

Hier ist sind die http Security für dein Einbau in htaccess im Überblick, die mit Kommentaren (erkennbar am „#“ ) versehen sind. Diese können entfernt werden.

#Content Security Policy
<ifModule mod_headers.c>
	Header always set Content-Security-Policy "upgrade-insecure-requests;"
</IfModule>

# X-Content-Type Options
<IfModule mod_headers.c>
	Header set X-Content-Type-Options nosniff
</IfModule>

# Referrer-Policy
<IfModule mod_headers.c>
	Header set Referrer-Policy "same-origin"
</IfModule>

#HTTP Strict Transport Security (HSTS)
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Header set Strict-Transport-Security: "max-age=63072000; includeSubDomains; preload"

# X-Frame-Options
<IfModule mod_headers.c>
	Header set X-Frame-Options "SAMEORIGIN"
</IfModule>

#Permission Policy
<IfModule mod_headers.c>
	Header set Permissions-Policy "accelerometer=()‚ autoplay=(self), camera=(), encrypted-media=(), fullscreen=(), geolocation=(self), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(), picture-in-picture=(self), usb=(), interest-cohort=()"
</IfModule>

# X-XSS-Protection 
<IfModule mod_headers.c>
	Header set X-XSS-Protection "1; mode=block"
</IfModule>

Wie teste ich, ob die Security Header eingebaut sind?

Über Tools wie https://securityheaders.com/ könnt ihr auf die Schnelle die Webseite prüfen und schauen, ob alles korrekt eingepflegt ist. Zusätzlich könnt ihr mit „Hide Results“ das Ergebnis für eine öffentliche Listung verstecken.

Welche Bedeutung haben Security Header in SEO?

http Security Header haben an sich keinen direkten rankingbeeinflussenden Faktor, können aber das Vertrauen in eine Webseite deutlich erhöhen, zumal die Sicherheit einer Webseite bei Google generell eine sehr hohe Priorität genießt. Sichere Webseiten sind auch langfristiger Natur. Schließlich ist WordPress als häufig genutztes CMS ein beliebtes Ziel für Angriffe.

Im technischen Bereich kann je nach Konfiguration die Ladezeit einer Seite erhöht werden (wenn auch nur minimal), wenn beispielsweise bei Content Security Policy das Laden von unsicheren Inhalten vermieden werden.