Bei HSTS (HTTP Strict Transport Security) handelt es sich um einen Sicherheitsmechanismus, der entwickelt wurde, um HTTPS-Verbindungen gegen Man-in-the-Middle-Angriffe und Session-Hijacking abzusichern. Mit der HTTPS-Erweiterung können Webseitenbetreiber Webbrowsern durch optionale Angaben im HTTP-Header signalisieren, dass eine Website für einen definierten Zeitraum ausschließlich SSL/TLS-verschlüsselt abgerufen werden kann. Serverseitig wird dazu das Header-Feld Strict-Transport-Security verwendet. Dieses beinhaltet die obligatorische Direktive max-age und kann um die optionalen Direktiven includeSubDomains und preload erweitert werden:
Strict-Transport-Security: max-age=31536000
Die Direktive max-age gibt an, wie lange eine Website ausschließlich verschlüsselt zur Verfügung stehen soll. Der Zeitraum wird in Sekunden definiert. Ein max-age von 31.536.000 Sekunden entspricht einem Zeitraum von einem Jahr.
Besucht ein Internetnutzer eine HSTS-gesicherte Website zum ersten Mal, erhält der Browser über das Header-Feld Strict-Transport-Security folgende Anweisungen:
- Alle unverschlüsselten Links zur jeweiligen Website müssen in verschlüsselte Links umgeschrieben werden (http:// wird zu https://).
- Kann die Sicherheit der Verbindung (z. B. aufgrund eins ungültigen Zertifikats) nicht sichergestellt werden, muss diese abgebrochen werden. Der Nutzer bekommt eine Fehlermeldung angezeigt.
Optional besteht die Möglichkeit, HSTS-Angaben auf Subdomains auszuweiten. In diesem Fall wird das Header-Feld Strict-Transport-Security um die Direktive includeSubDomains ergänzt. Diese signalisiert dem Browser, dass der HSTS-Header nicht nur für den aktuellen Host (z. B. www.example.com) gilt, sondern für alle Subdomains unter der jeweiligen Domain (z. B. auch für blog.example.com oder adserver.example.com).
Strict-Transport-Security: max-age=31536000; includeSubDomains
Die Direktive preload ermöglicht es, Webseiten für das sogenannte Preloading zu markieren, um das „First-Visit-Problem“ zu umgehen.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Ohne den preload-Parameter wirkt sich HSTS nur auf zukünftige Webseitenbesuche aus: Kennt ein Browser die Informationen im HSTS-Header einer Website, werden spätere Aufrufe entsprechend umgesetzt. Beim ersten Aufruf der Website greift dieser Sicherheitsmechanismus nicht. Browserhersteller wie Google und Mozilla bieten daher die Möglichkeit, Webseiten in sogenannte Preload-Listen einzutragen. Webseiten, die für ein Preloading registriert wurden, sind ausschließlich über HTTPS abrufbar. Preload-Listen werden von Browserbereitern zentral geführt und im Rahmen von Updates an die Browser der Nutzer übermittelt.