developer.overheid.nl

Ontwikkelaarsportaal van de Nederlandse overheid

Ga naar hoofdinhoud

HTTP Strict Transport Security (HSTS)

HTTP Strict Transport Security (HSTS) is een webstandaard waarmee een website aan browsers kenbaar maakt dat deze uitsluitend via HTTPS benaderd mag worden. Hierdoor wordt voorkomen dat bezoekers onbedoeld of door een aanval terechtkomen op een onbeveiligde HTTP-verbinding.

HSTS vormt een belangrijke aanvullende beveiligingsmaatregel bovenop HTTPS en beschermt tegen aanvallen waarbij een versleutelde verbinding wordt teruggebracht naar of geinitieerd over een onbeveiligde verbinding (ook wel SSL stripping genoemd).

Configuratie

HSTS wordt geactiveerd door het meesturen van een HTTP-header:

Strict-Transport-Security: max-age=31536000;

De mogelijke opties zijn:

  • max-age: het aantal seconden dat de browser moet onthouden dat HTTPS verplicht is.
  • includeSubDomains: zorgt ervoor dat de HSTS ook geldt voor alle subdomeinen.
  • preload: optionele toevoeging voor opname in de HSTS preload-lijst van browsers.

Een veelgebruikte configuratie is:

Strict-Transport-Security: max-age=31536000; includeSubDomains;

Voorwaarden voor gebruik

Voordat HSTS wordt ingeschakeld moet een applicatie volledig via HTTPS functioneren.

Controleer daarom onder andere:

  • Of alle pagina's en API-endpoints via HTTPS bereikbaar zijn.
  • Of HTTP-verkeer automatisch wordt doorgestuurd naar HTTPS.
  • Of certificaten correct zijn geconfigureerd en tijdig worden vernieuwd.
  • Of alle subdomeinen HTTPS ondersteunen wanneer includeSubDomains wordt gebruikt.

Een onjuiste configuratie kan ertoe leiden dat gebruikers een website tijdelijk niet meer kunnen bereiken.

Toepasbaar op websites en API's

De HSTS-standaard geldt zowel voor websites als voor API's.

Iedere internettoepassing die via HTTP(S) bereikbaar is profiteert van het afdwingen van versleutelde verbindingen. Dit voorkomt dat gevoelige gegevens, zoals authenticatiegegevens, persoonsgegevens of API-tokens, via onbeveiligde verbindingen worden verzonden.

HSTS Preload

Normaal gesproken leert een browser pas dat een website HSTS gebruikt nadat de website minimaal één keer via HTTPS bezocht is.

Om ook het allereerste bezoek te beschermen kunnen domeinen worden opgenomen in de zogenaamde HSTS preload list. Deze lijst wordt standaard meegeleverd in moderne browsers.

Voor opname gelden aanvullende eisen, waaronder:

  • Een geldige HTTPS-configuratie.
  • Een HSTS-header met een lange max-age, minimaal 1 jaar of 31536000 seconden.
  • Het gebruik van includeSubDomains.
  • Het gebruik van de preload-directive.

Opname in de preload-lijst vereist zorgvuldige afweging omdat het verwijderen van een domein uit de lijst langdurig kan zijn.

Wettelijke verplichting voor de Nederlandse overheid

Voor Nederlandse overheidsorganisaties is het gebruik van HTTPS en HSTS niet alleen een best practice, maar sinds 1 juli 2023 ook een wettelijke verplichting.

Deze verplichting volgt uit het Besluit beveiligde verbinding met overheidswebsites en -webapplicaties onder de Wet digitale overheid. De verplichting geldt voor publiek toegankelijke websites en webapplicaties van onder meer:

  • Het Rijk.
  • Provincies.
  • Gemeenten.
  • Waterschappen.
  • Organisaties binnen de (semi-)publieke sector.

Daarnaast staan HTTPS en HSTS op de lijst van verplichte open standaarden van Forum Standaardisatie. De standaarden moeten worden toegepast op de communicatie tussen clients en servers voor websites en webservices.

Validatie

Het is raadzaam om doorlopend te controleren of HSTS correct is ingericht.

Enkele aandachtspunten:

  • Wordt de HSTS-header daadwerkelijk meegestuurd?
  • Is er maar 1 actieve HSTS header?
  • Is de ingestelde max-age voldoende lang?
  • Zijn certificaten geldig en actueel?
  • Werken alle subdomeinen correct wanneer includeSubDomains is geconfigureerd?
  • Blijft de configuratie correct functioneren na wijzigingen in hosting of infrastructuur?

Testen

Voor het testen van HTTPS- en HSTS-configuraties kunnen onder andere de volgende hulpmiddelen worden gebruikt:

Meer informatie

Meer informatie over HTTPS en HSTS is beschikbaar via: