Strict-Transport-Security

Der HTTP-Strict-Transport-Security-Antwortheader (oft abgekürzt als HSTS) informiert Browser darüber, dass die Webseite ausschließlich über HTTPS erreichbar sein soll und dass alle zukünftigen Versuche, sie über HTTP zu erreichen, automatisch in HTTPS umgewandelt werden sollen.

Hinweis: Dies ist sicherer als das einfache Konfigurieren einer HTTP-zu-HTTPS-Umleitung (301) auf Ihrem Server, bei der die anfängliche HTTP-Verbindung immer noch anfällig für einen Man-in-the-Middle-Angriff ist.

Header-Typ Antwortheader
Verbotener Header-Name nein

Syntax

http
Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains; preload

Direktiven

max-age=<expire-time>

Die Zeit in Sekunden, die der Browser sich merken soll, dass eine Seite nur über HTTPS erreichbar ist.

includeSubDomains Optional

Wenn dieser optionale Parameter angegeben ist, gilt diese Regel auch für alle Subdomains der Webseite.

preload Optional Nicht standardisiert

Siehe Preloading Strict Transport Security für Details. Bei Verwendung von preload muss die max-age-Direktive mindestens 31536000 (1 Jahr) betragen und die includeSubDomains-Direktive muss vorhanden sein. Nicht Teil der Spezifikation.

Beschreibung

Wenn eine Webseite eine Verbindung über HTTP akzeptiert und zu HTTPS umleitet, können Besucher zunächst mit der unverschlüsselten Version der Seite kommunizieren, bevor sie umgeleitet werden, wenn z. B. der Besucher http://www.foo.com/ oder einfach nur foo.com eingibt. Dies schafft eine Gelegenheit für einen Man-in-the-Middle-Angriff. Die Umleitung könnte ausgenutzt werden, um Besucher auf eine bösartige Seite statt auf die sichere Version der ursprünglichen Seite zu leiten.

Der HTTP Strict Transport Security Header informiert den Browser, dass er niemals eine Seite über HTTP laden und alle Versuche, die Seite über HTTP zu erreichen, stattdessen automatisch in HTTPS-Anfragen umwandeln soll.

Hinweis: Der Strict-Transport-Security-Header wird vom Browser ignoriert, wenn Ihre Seite nur über HTTP aufgerufen wurde. Sobald Ihre Seite über HTTPS ohne Zertifikatfehler aufgerufen wird, weiß der Browser, dass Ihre Seite HTTPS-fähig ist und beachtet den Strict-Transport-Security-Header. Browser tun dies, da Angreifer HTTP-Verbindungen zur Seite abfangen und den Header injizieren oder entfernen können.

Ein Beispiel-Szenario

Sie loggen sich in einen kostenlosen WLAN-Zugangspunkt an einem Flughafen ein und beginnen im Internet zu surfen, indem Sie Ihren Online-Banking-Service besuchen, um Ihr Guthaben zu überprüfen und ein paar Rechnungen zu bezahlen. Leider ist der Zugangspunkt, den Sie nutzen, tatsächlich der Laptop eines Hackers, und dieser fängt Ihre ursprüngliche HTTP-Anfrage ab und leitet Sie zu einer Kopie der Bankseite um, anstatt zur echten Seite. Nun sind Ihre privaten Daten für den Hacker offen.

Strict Transport Security löst dieses Problem; solange Sie die Webseite Ihrer Bank einmal mit HTTPS aufgerufen haben und die Bankseite Strict Transport Security verwendet, wird Ihr Browser wissen, dass er automatisch nur HTTPS verwenden soll, was verhindert, dass Hacker diese Art von Man-in-the-Middle-Angriff durchführen können.

Wie der Browser damit umgeht

Beim ersten Zugriff auf Ihre Seite über HTTPS und der Rückgabe des Strict-Transport-Security-Headers speichert der Browser diese Information, sodass zukünftige Versuche, die Seite über HTTP zu laden, automatisch HTTPS verwendet werden.

Wenn die im Strict-Transport-Security-Header angegebene Ablaufzeit abgelaufen ist, wird der nächste Versuch, die Seite über HTTP zu laden, wie gewohnt fortgesetzt, anstatt automatisch HTTPS zu verwenden.

Wann immer der Strict-Transport-Security-Header an den Browser geliefert wird, aktualisiert er die Ablaufzeit für diese Seite, sodass Seiten diese Informationen aktualisieren können und das Timeout nicht abläuft. Sollte es notwendig sein, Strict Transport Security zu deaktivieren, wird durch das Setzen von max-age auf 0 (über eine HTTPS-Verbindung) der Strict-Transport-Security-Header sofort ablaufen, sodass der Zugang über HTTP möglich ist.

Preloading Strict Transport Security

Google betreibt einen HSTS-Preload-Service. Indem Sie den Richtlinien folgen und erfolgreich Ihre Domain einreichen, können Sie sicherstellen, dass Browser nur über sichere Verbindungen mit Ihrer Domain verbinden. Obwohl der Service von Google gehostet wird, verwenden alle Browser diese Preload-Liste. Es ist jedoch nicht Teil der HSTS-Spezifikation und sollte nicht als offiziell behandelt werden.

Beispiele

Alle gegenwärtigen und zukünftigen Subdomains werden für eine max-age von 1 Jahr per HTTPS erreichbar sein. Dies blockiert den Zugriff auf Seiten oder Subdomains, die nur über HTTP bereitgestellt werden können.

http
Strict-Transport-Security: max-age=31536000; includeSubDomains

Obwohl eine max-age von 1 Jahr für eine Domain akzeptabel ist, wird ein Wert von zwei Jahren empfohlen, wie auf https://hstspreload.org erklärt.

Im folgenden Beispiel wird max-age auf 2 Jahre gesetzt und mit preload versehen, was für die Aufnahme in die HSTS-Preload-Listen aller wichtigen Webbrowser wie Chromium, Edge und Firefox erforderlich ist.

http
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Spezifikationen

Specification
HTTP Strict Transport Security (HSTS)
# section-6.1

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch