HTTP Strict Transport Security (HSTS) ist ein Mechanismus, mit dem ein Webserver den Browser anweist, eine Domain ausschließlich über HTTPS aufzurufen. Er sendet dazu den Header "Strict-Transport-Security" mit einer Gültigkeitsdauer (max-age) und optionalen Direktiven wie includeSubDomains und preload.
Nach Empfang des Headers merkt sich der Browser für die angegebene Zeit, dass alle künftigen Anfragen an diese Domain (und ggf. ihre Subdomains) automatisch auf HTTPS umgeschrieben werden. Klickt ein Nutzer auf einen http:-Link, leitet der Browser intern um, ohne überhaupt eine unverschlüsselte Anfrage zu senden.
Einsatzzweck ist der Schutz vor SSL-Stripping-Angriffen, bei denen ein Angreifer im Netz HTTPS-Seiten in unverschlüsselte umwandelt. HSTS schließt diese Lücke konsequent, sofern der Nutzer die Domain bereits einmal über HTTPS erreicht hat. Für die allererste Verbindung gibt es das HSTS-Preload-Programm der Browserhersteller.
HSTS wurde 2012 in RFC 6797 standardisiert. Initiator war eine Gruppe um Jeff Hodges, Collin Jackson und Adam Barth, die das Verhalten an reale Angriffe wie Moxie Marlinspikes "sslstrip"-Demos anlehnte. Browser implementieren HSTS heute durchgängig.
Eine bekannte praktische Konsequenz ist, dass falsch gesetztes includeSubDomains samt langem max-age dazu führen kann, dass ein produktiv nicht erreichbarer HTTPS-Subdomain-Endpunkt den gesamten Subdomain-Zweig blockiert. HSTS ist mächtig, aber unwiderruflich für die Dauer der gesetzten Frist - also Vorsicht.