Die BBC führt HSTS auf ihrer Website ein, um die Sicherheit und Leistung zu verbessern. Hier erfährst du, was das bedeutet und wie HSTS dir dabei helfen kann.
Die Verbreitung von HTTPS hat in den letzten Jahren stetig zugenommen. Laut Web Almanac des HTTP-Archivs von 2021 wurden etwa 91% aller Anfragen für Computer und Mobilgeräte über HTTPS ausgeliefert. HTTPS ist nicht mehr einfach so weit – es ist eine unverzichtbare Voraussetzung, um Funktionen wie Service Worker und moderne Protokolle wie HTTP/2 und HTTP/3 nutzen zu können.
Vor Kurzem hat Neil Craig, ein Lead Technical Architect bei der BBC, getwittert, dass HTTP Strict Transport Security (HSTS) nach und nach für bbc.com eingeführt wird. Finde heraus, was das für die BBC bedeutet und was es für dich bedeuten könnte.
Das Problem
Webserver überwachen Anfragen häufig sowohl an Port 80 als auch an Port 443. Port 80 ist für unsichere HTTP-Anfragen und Port 443 für sicheres HTTPS. Dies kann zu Problemen führen, denn wenn Sie eine Adresse ohne das Protokollpräfix https://
in die Adressleiste eingeben, wie dies bei den meisten Nutzern der Fall ist, leiten manche Browser den Traffic aus älteren Gründen zur unsicheren HTTP-Version einer Website weiter (ist jedoch nicht immer der Fall).
Eine gängige Methode, um sicherzustellen, dass Nutzer nicht auf eine ungesicherte Version einer Website zugreifen, besteht darin, für alle Anfragen eine HTTP-zu-HTTPS-Weiterleitung zu platzieren. Dies funktioniert sicherlich, aber dadurch wird die folgende Ereigniskette gestartet:
- Der Server empfängt eine HTTP-Anfrage.
- Der Server gibt eine Weiterleitung zum HTTPS-Äquivalent der angeforderten Ressource aus.
- Der Server muss eine sichere Verbindung mit dem Browser aushandeln.
- Der Inhalt wird wie gewohnt geladen.
Weiterleitungen funktionieren einwandfrei, können jedoch falsch konfiguriert sein, sodass dennoch der Zugriff auf die unsichere Version einer Website möglich ist. Selbst wenn alles richtig konfiguriert ist, besteht ein Sicherheitsproblem darin, dass der Nutzer während der Weiterleitungsphase über unsicheres HTTP eine Verbindung herstellt. Dadurch besteht die Gefahr von gefährlichen Man-in-the-Middle-Angriffen.
HSTS eingeben
HSTS wird durch den HTTP-Antwortheader Strict-Transport-Security
für HTTPS-Anfragen festgelegt. Wenn diese Option festgelegt ist, lösen wiederkehrende Besuche auf einer Website eine spezielle Weiterleitung aus, die als „307 – interne Weiterleitung“ bezeichnet wird. Dabei übernimmt der Browser die Weiterleitungslogik und nicht der Server. Dadurch wird verhindert, dass die Anfrage abgefangen wird, da sie nie den Browser verlässt, und somit sicherer. Ein weiterer Vorteil ist, dass diese Arten von Weiterleitungen extrem schnell sind, sodass jede spürbare Latenz während eines HTTP-zu-HTTPS-Hops vermieden wird.
![Eine interne 307-Weiterleitung von HTTP zu HTTPS, die durch einen HSTS-Header ausgelöst wird. Die 307-Weiterleitung dauert nur 2 Millisekunden.](https://web.dev/static/blog/bbc-hsts/image/a-307-internal-redirect-cd7d384b0a833.png?authuser=6&hl=de)
Ähnlich wie bei der Syntax der max-age
-Anweisung von Cache-Control
gibt ein HSTS-Header eine max-age
-Anweisung an. Diese Anweisung benötigt einen Wert in Sekunden, der angibt, wie lange die Richtlinie gültig ist:
Strict-Transport-Security: max-age=3600
Im vorherigen Beispiel sollte die Richtlinie nur eine Stunde lang wirksam werden.
HSTS bereitstellen
Der Hauptnachteil der Bereitstellung von HSTS besteht darin, dass Sie Ihren Ursprung nicht als streng sicher behandeln möchten. Angenommen, Sie haben eine Reihe von Subdomains, über die Sie Ressourcen bereitstellen, aber möglicherweise sind nicht alle sicher. In diesem Szenario kann ein HSTS-Header deine Website beschädigen.
Die BBC war bei der Bereitstellung von HSTS richtig. Wie Neil Craig in seinem Tweet erwähnte, war für bbc.com anfangs der Wert max-age=10
festgelegt.
Das bedeutet, dass die Richtlinie anfangs nur zehn Sekunden lang gültig war. Dies bietet keinen großen Nutzen, aber es geht darum, zu überlegen, ob es überhaupt Probleme mit der Anwendung von HSTS gibt. Im Laufe der Zeit können Sie die Richtlinie schrittweise erhöhen und prüfen, ob Probleme auftreten. Zum Zeitpunkt der Erstellung dieses Artikels gibt bbc.com eine HSTS-Richtlinie von max-age=86400
an, und diese wird mit der Zeit höchstwahrscheinlich ansteigen.
Bei der Bereitstellung von HSTS solltest du auf keinen Fall mit einem langen max-age
-Wert aus dem Gate herauskommen. Es kann vorkommen, dass Sie plötzlich Schwierigkeiten haben, Probleme zu beheben, während die Nutzenden Probleme haben. Fangen Sie klein an und erhöhen Sie sich schrittweise. Wenn du sicher bist, dass alles in Ordnung ist, kannst du einen deutlich längeren Zeitraum für die max-age
-Anweisung festlegen. Es wird empfohlen, max-age
auf ein oder zwei Jahre festzulegen, wenn die Einführung abgeschlossen ist.
Mit der HSTS-Preload-Liste sicherere und schnellere anfängliche Navigation
Eine HSTS-Richtlinie wird erst nach dem ersten Besuch einer Website wirksam, sodass die Vorteile beim ersten Besuch auf der Website nicht zu sehen sind. Auch dafür ist die unsichere Weiterleitung erforderlich. Sie können Ihre HSTS-Richtlinie jedoch vorab laden, indem Sie Ihre Website an die HSTS-Vorabladeliste senden. Dabei handelt es sich um eine hartcodierte Liste von Websites, von denen der Browser weiß, dass sie ausschließlich HTTPS verwenden. Steht Ihre Website auf der Liste zum Vorabladen, ist auch der erste Besuch geschützt und die HTTP-zu-HTTPS-Weiterleitung erfolgt sofort.
Probier es selbst aus
Wenn die BBC sich damit einverstanden erklärt, HSTS zu testen, ist es sehr wahrscheinlich, dass Sie dies auch für Ihre Website tun können. Probieren Sie es einfach aus. Wenn Sie Ihre Website optimieren möchten, fügen Sie sie der HSTS-Vorabladeliste hinzu, wenn Sie sicher sind, dass es keine Fehler gibt. So wird die Nutzung für Ihre Nutzer sicherer und schneller.