HTTP Strict Transport Security, afgekort HSTS, is een beveiligingsmaatregel die een verbinding via HTTPS afdwingt. Daarbij is het uiteraard belangrijk dat er een geldig, actief SSL-certificaat aanwezig is. Zonder geldig SSL-certificaat kan een website met HSTS niet worden geladen. Bovendien kunt u de foutmelding dan niet negeren, terwijl dat zonder HSTS wel kan.
HSTS-kwetsbaarheid
Als websitebeheerder kunt u zelf kiezen of het verkeer via HTTP of via HTTPS verloopt. Standaard verloopt het via HTTP. U kunt een SSL-certificaat installeren en het verkeer naar uw website doorverwijzen naar HTTPS, bijvoorbeeld via .htaccess of door een vinkje te plaatsen in uw controlepaneel. HSTS is echter niet waterdicht: het eerste verzoek verloopt altijd nog via HTTP. Bij dat eerste verzoek kan een hacker dus nog steeds misbruik maken van de verbinding en een man-in-the-middle-aanval uitvoeren. Let op: u kunt HSTS alleen activeren wanneer er een geldig SSL-certificaat actief is.
Man-in-the-middle-aanval
Zoals gezegd verloopt het eerste verzoek nog altijd via HTTP, waardoor een hacker een man-in-the-middle-aanval (MITM) kan uitvoeren. Bij zo’n aanval kan een hacker de communicatie tussen de bezoeker en de server onderscheppen en eventueel aanpassen. Informatie die u dan invoert, kan de hacker inzien en zelfs aanpassen. Een hacker kan bijvoorbeeld ook een cookie (een klein bestandje) op uw computer plaatsen, waardoor uw webbrowser u doorstuurt naar een andere website. Dat kan een website zijn die lijkt op een officiële website, bijvoorbeeld die van een bank, maar die dat niet is. Zo kan de hacker aan uw gegevens komen en deze misbruiken.
Wanneer HSTS actief is, neemt dit risico af, zeker als u ook de preloadfunctie gebruikt. Meer informatie over een man-in-the-middle-aanval vindt u op Wikipedia.
Periode instellen bij HSTS
Bij HSTS geeft u een vaste periode op waarin de client (webbrowser) uitsluitend HTTPS moet gebruiken. De standaardperiode is 1 jaar, maar u kunt ook een langere of kortere periode instellen. Stel dit zorgvuldig in, zodat uw bezoekers er geen maanden of jaren last van hebben. Komt u na het activeren van HSTS onverwacht tot de ontdekking dat het toch niet goed gaat, en hebt u de periode op 1 jaar ingesteld, dan hebben al uw bezoekers bijvoorbeeld een jaar lang last van deze instelling, tenzij zij HSTS zelf handmatig in hun browserinstellingen uitzetten.
Subdomeinen en HSTS
Mogelijk staan uw subdomeinen op verschillende servers. HSTS houdt hier geen rekening mee en vereist dus ook op die servers een geldig SSL-certificaat. Een foutieve HSTS-instelling kan er daardoor direct voor zorgen dat een groot deel van uw website niet meer werkt. Ga hier daarom heel zorgvuldig mee om. Bedenk goed of u al uw subdomeinen ook van HSTS wilt voorzien. Wilt u subdomeinen meenemen, dan kunt u dit meestal selecteren in het controlepaneel of aangeven in de code.

Wat zijn de voordelen van HSTS?
Het grote voordeel van HSTS is dat het de beveiliging ten goede komt. Het verkleint het risico op een man-in-the-middle-aanval, mits u HSTS goed instelt, en u bent daarnaast beter voorbereid op de toekomst.
Zodra er een HSTS-header actief is, laadt de website sneller, omdat de doorverwijzing van HTTP naar HTTPS dan niet meer plaatsvindt. Daardoor kunnen zoekmachines de website ook hoger in de resultaten plaatsen.
Wat zijn de nadelen van HSTS?
Een van de nadelen is dat u altijd een geldig SSL-certificaat nodig hebt (op zich hoort dat uiteraard standaard zo te zijn en is het niet echt een nadeel).
Houd bij het activeren van HSTS ook rekening met subdomeinen. Activeert u HSTS via het hoofddomein en geeft u aan dat ook de subdomeinen van HSTS moeten worden voorzien, dan moeten al uw subdomeinen een geldig SSL-certificaat hebben.
Een foutieve instelling kan ertoe leiden dat uw website of websites voor een langere periode niet bereikbaar zijn.
HSTS is (nog) niet waterdicht. Bij het eerste bezoek aan een website verloopt de verbinding nog steeds via HTTP, waardoor een hacker met bepaalde tools de HSTS-header kan weghalen. Om dit beter tegen te gaan, kunt u gebruikmaken van de preloadlijst.
HSTS-preloadlijst
Veel webbrowsers gebruiken een HSTS-preloadlijst. Dit is een lijst met domeinnamen die alleen via HTTPS bereikbaar zijn. Als u aangeeft dat HSTS via preload moet worden ingeladen, is dat nog veiliger, omdat de HSTS-instelling al bekend is voordat uw website wordt geladen. Uw website wordt dan direct via HTTPS geladen. U kunt uw site aan de preloadlijst toevoegen via https://hstspreload.org. Daarvoor moet u aan enkele voorwaarden voldoen:
- Uw domeinnaam moet voorzien zijn van een geldig SSL-certificaat.
- Alle verzoeken op de HTTP-poort (poort 80) moeten worden doorverwezen naar HTTPS op hetzelfde domein. Zo moet bijvoorbeeld http://voorbeeldsite.nl doorverwijzen naar https://voorbeeldsite.nl en mag het niet doorverwijzen naar https://www.voorbeeldsite.nl.
- De HSTS-header moet de directive includeSubDomains bevatten.
- De max-age (periode) moet minimaal 1 jaar zijn.
- De HSTS-header moet de directive preload bevatten.
Hoe activeer ik HSTS?
Hoe u HSTS kunt activeren, leest u in het artikel “HSTS activeren”.
Hoe kan ik HSTS verwijderen wanneer er een HSTS-header actief is?
Dit verschilt per webbrowser.
Chrome: typ het volgende in uw adresbalk: chrome://net-internals/#hsts. U vindt hier verschillende opties, waaronder het opvragen en het verwijderen (vergeten) van de HSTS-instelling.
Brave: typ het volgende in uw adresbalk: brave://net-internals/#hsts. U vindt hier verschillende opties, waaronder het opvragen en het verwijderen (vergeten) van de HSTS-instelling.
Firefox: open Firefox en druk op Shift + Ctrl + H (op een Mac: Cmd + Shift + H). Zoek de website op waarvoor u de HSTS-instelling wilt verwijderen. Klik er met de rechtermuisknop op en kies “Forget About This Site” of “Vergeet deze website”. Let op: hiermee verwijdert u ook de opgeslagen wachtwoorden.