HTTP Strict Transport Security (HSTS) is een beveiligingsbeleidsmechanisme dat websites helpt beschermen tegen man-in-the-middle-aanvallen zoals protocoldowngrade-aanvallen en het kapen van cookies. Door beveiligde verbindingen af te dwingen, instrueert HSTS browsers om alleen met een website te communiceren via een beveiligde HTTPS-verbinding, in plaats van HTTP.

Wat is HSTS?
HTTP Strict Transport Security (HSTS) is een webbeveiligingsbeleid waarmee websites zichzelf alleen toegankelijk kunnen verklaren via beveiligde HTTPS-verbindingen. Wanneer een website HSTS implementeert, informeert deze browsers dat ze uitsluitend HTTPS moeten gebruiken om met de site te communiceren, waardoor de mogelijkheid om het minder veilige HTTP-protocol te gebruiken wordt geëlimineerd. Dit wordt bereikt door de server het verzenden van een HSTS-header in zijn HTTP-antwoorden, waarin een periode wordt gespecificeerd gedurende welke de browser dit beleid moet afdwingen.
HSTS helpt verschillende aanvallen te voorkomen, waaronder aanvallen op protocoldowngrades, waarbij een aanvaller een browser dwingt HTTP te gebruiken in plaats van HTTPS, en het kapen van cookies, waarbij cookies worden onderschept via onbeveiligde verbindingen.
Door HTTPS verplicht te stellen, zorgt HSTS ervoor dat alle communicatie tussen de browser van de gebruiker en de website plaatsvindt versleutelde en veilig, waardoor de algehele veiligheidspositie van de webapplicatie.
Een korte geschiedenis van HSTS
Het concept van HTTP Strict Transport Security (HSTS) is voortgekomen uit de groeiende behoefte om de webbeveiliging te verbeteren. Het werd voor het eerst voorgesteld in 2009 door Jeff Hodges, Collin Jackson en Adam Barth. Hun werk was gericht op het beperken van de risico's die gepaard gaan met man-in-the-middle-aanvallen en protocoldowngrade-aanvallen waarbij misbruik werd gemaakt van de kwetsbaarheden van HTTP. Het eerste ontwerp werd in 2010 ingediend bij de Internet Engineering Task Force (IETF) en na verschillende herzieningen en feedback van de gemeenschap werd het in 2012 een standaard met de publicatie van RFC 6797. Sindsdien is HSTS op grote schaal overgenomen door grote webbrowsers. en websites, en worden een cruciaal hulpmiddel bij het beveiligen van webcommunicatie.
Waarom is HSTS belangrijk?
HSTS is belangrijk omdat het de veiligheid van webcommunicatie aanzienlijk verbetert. Door het gebruik van HTTPS af te dwingen, zorgt HSTS ervoor dat alle gegevens die worden uitgewisseld tussen de browser van een gebruiker en een website gecodeerd zijn, waardoor deze worden beschermd tegen afluisteren en knoeien. Dit is van cruciaal belang voor het beschermen van gevoelige informatie, zoals inloggegevens, persoonlijke gegevens en financiële transacties, tegen kwaadwillende actoren.
HSTS voorkomt ook protocoldowngrade-aanvallen, waarbij aanvallers de browser ertoe verleiden de minder veilige HTTP te gebruiken, en het kapen van cookies, waarbij sessiecookies worden onderschept via een onbeveiligde verbinding.
Hoe werkt HSTS?
HTTP Strict Transport Security (HSTS) is een mechanisme dat ervoor zorgt dat een webbrowser altijd een veilige HTTPS-verbinding gebruikt bij de communicatie met een website. Het werkt door websites toe te staan zichzelf alleen toegankelijk te maken via HTTPS, waardoor verschillende aanvallen worden voorkomen die verband houden met het minder veilige HTTP-protocol.
Wanneer een gebruiker voor het eerst een website bezoekt die HSTS ondersteunt, wordt de server reageert met een speciale HTTP-header genaamd Strikte transportbeveiliging. Deze header specificeert een max-leeftijd waarde, die de periode (in seconden) aangeeft gedurende welke de browser alleen HTTPS-verbindingen voor de site moet afdwingen. De header kan ook een includeSubDomains richtlijn, waarin wordt aangegeven dat alles subdomeinen moet ook toegankelijk zijn via HTTPS.
Zodra de browser deze header ontvangt, registreert deze het HSTS-beleid en begint het met het handhaven ervan. Als de gebruiker de site of de subdomeinen ervan probeert te bezoeken via HTTP tijdens de opgegeven periode max-leeftijd periode converteert de browser het verzoek automatisch naar HTTPS, waardoor een veilige verbinding wordt gegarandeerd. Zelfs als de gebruiker handmatig typt "http://" in de adresbalk van de browser, zal de browser dit wijzigen in "https://" voordat u het verzoek indient.
Als het HSTS-beleid subdomeinen omvat, geldt deze bescherming ook voor deze domeinen, waardoor de gehele site verder wordt beveiligd domein structuur. Dit mechanisme elimineert effectief de mogelijkheden voor aanvallers om de verbinding te onderscheppen of te manipuleren door misbruik te maken van HTTP-kwetsbaarheden.
HSTS-vereisten
HTTP Strict Transport Security heeft verschillende vereisten waaraan moet worden voldaan om correct te kunnen functioneren en webcommunicatie effectief te beveiligen. Dit zijn de belangrijkste vereisten:
- HTTPS-implementatie. De website moet HTTPS ondersteunen en een geldig SSL / TLS certificaat. HSTS kan niet worden geïmplementeerd op een site die alleen HTTP ondersteunt, omdat het hele doel van HSTS het afdwingen van veilige HTTPS-verbindingen is.
- HSTS-koptekst. De server moet de HSTS-header verzenden (Strikte transportbeveiliging) in de HTTPS-antwoorden. Deze kop bevat de max-leeftijd richtlijn, die specificeert hoe lang de browser moet onthouden om HTTPS voor de site af te dwingen. Een voorbeeld van een HSTS-header is:
Strict-Transport-Security: max-age=31536000; includeSubDomains
- Richtlijn voor maximale leeftijd. De max-leeftijd richtlijn is verplicht en definieert de duur in seconden gedurende welke de browser HTTPS voor de site moet afdwingen. Bijvoorbeeld, max-age = 31536000 stelt het beleid voor één jaar vast.
- InclusiefSubDomains-richtlijn. Deze optionele richtlijn breidt het HSTS-beleid uit naar alle subdomeinen van de site. Indien opgenomen, moeten alle subdomeinen ook HTTPS ondersteunen.
- Voorladen (optioneel maar aanbevolen). Vooraf laden houdt in dat de site wordt aangemeld bij de HSTS-voorlaadlijst, een lijst die wordt bijgehouden door browserleveranciers. Zodra een site vooraf is geladen, zullen browsers HTTPS voor de site en de subdomeinen afdwingen vanaf het eerste bezoek, zelfs voordat de HSTS-header wordt ontvangen. Om in aanmerking te komen voor preloading moet de site een HSTS-header weergeven max-leeftijd van minimaal een jaar (31536000), inclusief de includeSubDomains richtlijn, en omvatten de preload richtlijn in de kop.
- Geen gemengde inhoud. De site moet gemengde inhoud vermijden, die optreedt wanneer HTTPS-pagina's bronnen (zoals afbeeldingen, scripts of stylesheets) laden via HTTP. Gemengde inhoud ondermijnt de veiligheid van HTTPS en kan ervoor zorgen dat browsers dergelijke bronnen blokkeren of beveiligingswaarschuwingen weergeven.
- omleidingen. Alle HTTP-verzoeken aan de site moeten worden omgeleid naar HTTPS voordat HSTS wordt toegepast. Dit zorgt ervoor dat gebruikers die de site in eerste instantie via HTTP bezoeken, naar de beveiligde versie worden geleid.
HSTS-beperkingen
HTTP Strict Transport Security (HSTS) is een krachtig beveiligingsmechanisme dat enkele beperkingen met zich meebrengt, waaronder:
- Initiële onveilige verbinding. De allereerste verbinding met een website wordt niet beschermd door HSTS, waardoor deze kwetsbaar is voor man-in-the-middle-aanvallen. Totdat de browser de HSTS-header ontvangt, kan de verbinding plaatsvinden via HTTP.
- Risico's van verkeerde configuratie. Onjuist configureren van HSTS, zoals het instellen van een very long max-leeftijd voor een site die niet klaar is voor volledige HTTPS-handhaving, kan dit tot problemen leiden. Andere voorbeelden van verkeerde configuratie zijn onder meer dat HTTPS niet volledig is geïmplementeerd of dat er sprake is van gemengde inhoud. Als dit gebeurt, ervaren gebruikers defecte functionaliteit of toegankelijkheidsproblemen.
- Subdomeindekking. Indien de includeSubDomains richtlijn niet wordt gebruikt, worden subdomeinen niet beschermd door het HSTS-beleid. Dit kan hen kwetsbaar maken voor aanvallen, waardoor de veiligheidsvoordelen van HSTS worden ondermijnd.
- Toegankelijkheid van de site. Als het SSL/TLS-certificaat van een site verloopt of verkeerd is geconfigureerd, hebben gebruikers geen toegang tot de site totdat het probleem is opgelost, aangezien HSTS alleen HTTPS-verbindingen verplicht stelt.
- Cache-problemen. Zodra een browser een HSTS-header ontvangt, zal deze HTTPS voor de site afdwingen totdat de max-leeftijd termijn verstrijkt. Als een site niet langer HTTPS wil gebruiken of de configuratie ervan wijzigt, kunnen gebruikers nog steeds gedwongen worden HTTPS te gebruiken vanwege het in de cache opgeslagen HSTS-beleid.
- Niet-ondersteunde browsers. Niet alle browsers ondersteunen HSTS. Gebruikers met oudere of minder gebruikelijke browsers die de HSTS-header niet herkennen, zullen niet profiteren van de beveiligingsmaatregelen.
- Nadelen van vooraf laden. Hoewel vooraf laden de veiligheid verbetert, is het een verplichting. Zodra een site is opgenomen in de HSTS-preloadlijst, kan deze niet eenvoudig worden verwijderd en eventuele problemen met HTTPS op de site resulteren in aanzienlijke toegangsproblemen voor gebruikers.
- Invloed op prestaties. Het forceren van HTTPS brengt een kleine prestatieoverhead met zich mee vanwege de codering en decryptie processen. Hoewel dit over het algemeen minimaal is, kan dit merkbaar zijn voor websites met veel verkeer of gebruikers met langzamere verbindingen.
HSTS-browsercompatibiliteit
De volgende tabel vergelijkt de HSTS-compatibiliteit met de meest gebruikte browsers van dit moment.
browser | Ondersteunde versies |
Google Chrome | 4 en hoger |
Mozilla Firefox | 4 en hoger |
Microsoft Edge | 12 en hoger |
Apple Safari | 7 en hoger |
Opera | 12 en hoger |
internet Explorer | Geen steun |
Best practices voor HSTS-implementatie
Voor een effectieve implementatie van HTTP Strict Transport Security (HSTS) zijn de volgende best practices vereist om robuuste beveiliging te garanderen en potentiële problemen te minimaliseren. Hier volgen enkele best practices voor de implementatie van HSTS:
- Zorg voor volledige HTTPS-ondersteuning. Voordat u HSTS inschakelt, moet u ervoor zorgen dat uw hele site HTTPS ondersteunt, inclusief alle subdomeinen en bronnen. Gemengde inhoud kan problemen veroorzaken wanneer HSTS wordt afgedwongen.
- Configureer SSL/TLS correct. Gebruik sterke SSL/TLS-configuraties om kwetsbaarheden te voorkomen. Zorg ervoor dat uw SSL/TLS-certificaten geldig, up-to-date en correct zijn geïnstalleerd.
- Stel de juiste maximumleeftijd in. Begin met een korte max-leeftijd waarde (bijvoorbeeld één dag) om de implementatie te testen en ervoor te zorgen dat alles correct werkt. Verhoog geleidelijk de max-leeftijd naar een langere duur (bijvoorbeeld een jaar) zodra u vertrouwen heeft in de opzet.
- Subdomeinen opnemen. Gebruik de includeSubDomains richtlijn om ervoor te zorgen dat alle subdomeinen onder het HSTS-beleid vallen, waardoor uitgebreide bescherming voor uw hele domein wordt geboden.
- Gebruik voorladen. Meld uw site aan op de HSTS-preloadlijst om ervoor te zorgen dat browsers HSTS vanaf het eerste bezoek afdwingen. Hiervoor is het instellen van a vereist max-leeftijd van minimaal één jaar, inclusief de includeSubDomains richtlijn, en het toevoegen van de preload richtlijn naar uw HSTS-header.
- Redirect HTTP naar HTTPS. Opgericht server-side omleidingen van HTTP naar HTTPS. Dit zorgt ervoor dat gebruikers die uw site in eerste instantie via HTTP bezoeken, worden doorgestuurd naar de beveiligde versie.
- Monitoren en testen. Controleer uw site regelmatig op SSL/TLS-problemen, gemengde inhoud en andere potentiële problemen. Gebruik tools zoals de SSL Test van SSL Labs om uw configuratie te controleren en ervoor te zorgen dat deze voldoet aan de best practices.
- Beveiligingsbeleid bijwerken. Houd uw beveiligingsbeleid en -configuraties, inclusief HSTS, regelmatig bijgewerkt met de nieuwste aanbevelingen en praktijken.
- Informeer gebruikers en belanghebbenden. Communiceer de wijzigingen aan uw gebruikers en belanghebbenden, waarbij u de voordelen en potentiële impact van de HSTS-implementatie uitlegt. Dit helpt de verwachtingen te beheersen en zorgt ervoor dat eventuele problemen snel worden gemeld en aangepakt.
- Bereid je voor op noodgevallen. Zorg voor een plan voor het afhandelen van noodgevallen, zoals het verlopen van certificaten of configuratiefouten. Indien nodig zou u uw site uit de HSTS-preloadlijst moeten kunnen verwijderen, hoewel dit proces enige tijd kan duren vanwege browserupdatecycli.