Wat is HSTS?
HSTS (HTTP Strict Transport Security) is een webbeveiligingsmechanisme dat browsers vertelt alleen te communiceren met een website via HTTPS, nooit HTTP. Zodra een browser een HST-header ziet, zal het automatisch alle toekomstige verzoeken upgraden naar HTTPS en weigeren verbinding te maken via gewone HTTP, zelfs als de gebruiker expliciet http://. typt
Waarom HST-zaken
Zelfs met een geldig SSL-certificaat bestaan kwetsbaarheden:
SSL Stripping Attack
1. Gebruikerstypen "example.com" (geen https://)
2. Aanvaller onderschept het oorspronkelijke HTTP-verzoek
3. Attacker proxies aan HTTPS, presenteert HTTP aan gebruiker
4. Gebruiker denkt dat ze veilig zijn, maar aanvaller ziet alles
HST voorkomt dit door ervoor te zorgen dat browsers nooit dat eerste HTTP-verzoek maken.
Voordelen van HSTS
- Voorkomt downgrade aanvallen: Geen HTTP terugval mogelijk
- Beschermt gebruikersbladwijzers: Zelfs oude HTTP bladwijzers worden HTTPS
- Elimineert gemengd gehalte: Submiddelen ook gedwongen tot HTTPS
- Verbetert prestaties: Geen HTTP→HTTPS redirects nodig
HSTS Header Syntax
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Richtlijnen
| Richtlijn | Omschrijving |
|---|---|
| max. leeftijd | Seconden om HSTS te onthouden (31536000 = 1 jaar) |
| omvattensubdomeinen | HSTS toepassen op alle subdomeinen |
| voorbelasting | Toestemming voor browser voorloadlijst-inclusie |
Uitvoering van HST's
Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Cloudflare
Inschakelen in SSL/TLS → Randcertificaten → HTTP Strict Transport Security
Express.js
const helmet = require('helmet');
app.use(helmet.hsts({
maxAge: 31536000,
includeSubDomains: true,
preload: true
}));
HSTS-preloadlijst
De HSTS preload lijst is een lijst van domeinen hardgecodeerd in browsers die alleen ooit via HTTPS moeten worden geopend. Dit elimineert zelfs de eerste HTTP-aanvraag kwetsbaarheid.
Preloadvereisten
1. Geldig SSL certificaat
2. Alle HTTP doorsturen naar HTTPS
3. HST-header met:
- ten minste 31536000 (1 jaar)
- omvattenSubDomains-richtlijn
- voorbelastingsrichtlijn
Verzenden naar preloadlijst
1. Verifiëren van vereisten: Gebruik hstspreload.org om te controleren
2. Domein verzenden: Voer domein in bij hstspreload.org
3. Wacht op opname: Duurt weken tot maanden voor browser-updates
Waarschuwingen voor laden
Preload is permanent (praktisch). Verwijderen van de lijst duurt maanden en vereist browser-updates. Alleen vooraf laden als je zeker bent dat alle subdomeinen HTTPS voor onbepaalde tijd zullen ondersteunen.Controle van HST's
Browser DevTools:1. Open DevTools → tabblad Netwerk
2. Laad de site
3. Controleer antwoord Headers voor Strict-Transport-Veiligheid
Gebruik van krul:curl -I https://example.com | grep -i strict
DomScan gebruiken:
curl "https://domscan.net/v1/health?domain=example.com"
# Reports hasHSTS in security details
Voorlaadstatus:
Controleer hstspreload.org om te zien of een domein is voorgeladen.
HST-implementatiestrategie
Fase 1: Korte maximumleeftijd
Begin met een korte max-leeftijd om te testen:
Strict-Transport-Security: max-age=300Als er iets breekt, worden de gebruikers slechts 5 minuten gecached.
Fase 2: Duur verhogen
Na bevestiging werkt HTTPS overal:
Strict-Transport-Security: max-age=86400
Fase 3: Subdomeinen toevoegen
Zodra alle subdomeinen HTTPS ondersteunen:
Strict-Transport-Security: max-age=2592000; includeSubDomains
Fase 4: volledige inzet + voorbelasting
Na maanden van stabiele werking:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadStuur dan naar de preload lijst.
Gemeenschappelijke HST-vraagstukken
Subdomein zonder HTTPS: inclusiefSubdomein breekt dat subdomein Ontwikkelingsomgevingen: HST's die afkomstig zijn van productieonderbrekingen CDN/Proxy headers: Zorg ervoor dat HST-header niet door tussenpersonen wordt verwijderd Gemengde inhoud: Alle bronnen moeten HTTPS zijn; HSTS repareert geen embedded HTTP resourcesHSTS is essentieel voor elke website die gevoelige gegevens verwerkt en sterk aanbevolen voor alle HTTPS-sites.