HSTS is een webbeveiligingsreactieheader. De naam is een acroniem voor "HTTP Strict Transport Security". De functie van de HSTS-header is om browsers te dwingen verbinding te maken met websites via HTTPS.
Tip: HTTPS gebruikt codering om uw internetverbinding te beveiligen tegen hackers die deze proberen te wijzigen of te controleren. HTTP heeft deze beveiligingen niet en dus kan een hacker op de juiste plaats uw HTTP-verkeer controleren en wijzigen.
Een webresponsheader is een stukje metagegevens dat door de server wordt verzonden wanneer deze reageert op webverzoeken. Een subset van deze headers wordt vaak beveiligingsheaders genoemd, omdat ze bedoeld zijn om de veiligheid van de website en de gebruiker te vergroten.
De HSTS-header heeft twee verplichte delen en twee optionele. De kopnaam "Strict-Transport-Security" en vervolgens de operator "max-age" en de waarde zijn beide verplicht. Een ander paar operators, "includeSubDomains" en "preload" worden soms ook gebruikt.
Wanneer de browser een HTTPS-antwoord ontvangt met de HSTS-header, wordt hij geïnstrueerd om verbinding te maken met deze website en alle bronnen erop, uitsluitend met behulp van HTTPS voor de duur van de "max-age"-timer. “Max-age” is een variabele die beschrijft hoe lang een instelling door de browser moet worden onthouden. De waarde van "max-leeftijd" wordt weergegeven in seconden, de aanbevolen waarde is "31536000", wat een jaar is.
Het idee is dat binnen de duur van deze timer, die opnieuw wordt ingesteld bij elke volgende pagina die wordt geladen, de browser een HTTPS-verbinding nodig heeft en alle HTTP-bronnen weigert. Dit beschermt tegen person-in-the-middle-aanvallen, waarbij een hacker tussen u en de webserver de reacties die u ontvangt, kan manipuleren.
Het belangrijkste punt waarop dit u beschermt, is de eerste verbinding. Wanneer u verbinding maakt met een website, kunt u doorgaans de HTTP-website opvragen en vervolgens worden doorgestuurd naar de HTTPS-website. Helaas kan een hacker in de middenpositie deze upgrade naar HTTPS voorkomen en vervolgens uw activiteit op de website stelen of controleren. Zodra de HSTS-header echter door de browser is gezien, maakt uw browser zelfs de eerste verbinding via HTTPS, waardoor u tegen hackers wordt beschermd.
HSTS voorkomt ook dat onveilige bronnen worden geladen die ook kwaadwillig kunnen worden gewijzigd door een aanvaller als ze via HTTP worden afgeleverd.
De operator “includeSubDomains” wordt gebruikt om aan te geven dat de header ook van toepassing moet zijn op alle subdomeinen van de website.
De HSTS-vooraflaadlijst
Het is u misschien opgevallen dat HSTS u nog steeds niet beschermt wanneer u voor het eerst verbinding maakt met een website. Dit is waar de "preload" -operator binnenkomt. Websites kunnen zich aanmelden om te worden opgenomen in de HSTS-preloadlijst, de “preload”-operator is een vereiste indicator als dit het geval is. De HSTS-preloadlijst wordt regelmatig bijgewerkt en opgeslagen in de browser, als een site daarin is opgenomen, zal de browser de HSTS-beveiligingen daarop toepassen. Dit gebeurt zelfs bij de allereerste verbinding voordat de browser ooit de HSTS-responsheader had kunnen zien.
Tip: Een "max-leeftijd" van een jaar of meer moet worden toegevoegd aan de HSTS-preloadlijst.
Problemen met HSTS
Een van de belangrijkste punten van HSTS is dat het een foutmelding geeft als er problemen zijn met de HTTPS-verbinding. Als extra veiligheidsmaatregel mogen gebruikers HSTS-foutmeldingen niet omzeilen, zoals bij normale HTTPS-fouten.
Helaas kan dit problemen veroorzaken als een bedrijf HSTS uitrolt voordat de hele website, en elke bron die erop wordt gebruikt, HTTPS ondersteunt. In dit geval zullen gebruikers HSTS-beveiligingsfoutmeldingen zien die ze niet kunnen omzeilen, waardoor de website in wezen volledig wordt verbroken. Het ergste is dat het eenvoudigweg verwijderen van de HSTS-header het probleem voor die gebruikers niet oplost, omdat hun browser HSTS blijft afdwingen voor de mogelijk maandenlange "max-age".
Als zodanig is het van cruciaal belang dat een korte "max-leeftijd" wordt gebruikt wanneer de kop voor het eerst wordt geïmplementeerd. Als er problemen zijn, houden ze slechts een korte tijd aan nadat ze zijn ontdekt. Pas als u zeker weet dat uw website volledig HSTS-compatibel is, moet u een lange HSTS-timer configureren.
Tip: het is ook mogelijk om een "max-leeftijd" van 0 in te stellen, dit verwijdert in wezen de opgeslagen HSTS-invoer van iedereen die het ziet. Dit kan helpen als er een probleem is, maar het is alleen van invloed op gebruikers wanneer en als ze besluiten het opnieuw te proberen.