Defaults.Exposed › Oplossingen › HSTS (Strict-Transport-Security)
Hoe je HSTS (Strict-Transport-Security) oplost
HSTS is een instructie van één regel die uw website aan elke browser geeft: «kom altijd terug via de beveiligde, versleutelde verbinding — nooit de onveilige». Zonder HSTS kan uw hangslot stilletjes worden weggehaald op gedeelde wifi, en is het allereerste bezoek aan uw site blootgesteld.
De kern voor je bedrijf: HTTPS hebben (het hangslot) is niet hetzelfde als het afdwingen. Zonder HSTS kan een aanvaller op dezelfde wifi als uw klant de verbinding stilletjes degraderen naar gewoon, onversleuteld HTTP — en logins, kaartgegevens en formuliergegevens opvangen terwijl de klant niets vreemds ziet. Uw SSL-certificaat, waar u mogelijk voor betaalt, wordt omzeild. De oplossing is gratis en kost ongeveer 15 minuten voor wie uw site beheert.
Wat dit je kan kosten
- Klanten op café-, hotel-, luchthaven- of conferentiewifi kunnen hun verbinding met uw site stilletjes gedegradeerd krijgen en hun gegevens gelezen — zonder enige waarschuwing op hun scherm.
- U betaalde voor HTTPS en hebt het hangslot, maar zonder HSTS kunnen aanvallers er simpelweg omheen routeren; het certificaat geeft een vals gevoel van veiligheid.
- Het allereerste bezoek aan uw site (voordat enige omleiding naar HTTPS plaatsvindt) is het zwakke punt dat aanvallers viseren — HSTS is wat dat dichtdoet voor elk volgend bezoek.
- Een beveiligingsvragenlijst, cyberverzekeringsformulier of de checklist van een zakelijke koper markeert «geen HSTS» en legt de deal stil tot het is opgelost.
- Stel de waarde verkeerd in (te kort) en u krijgt het slechtste van twee werelden: het lijkt geconfigureerd maar biedt vrijwel geen echte bescherming.
Waarom het ertoe doet. HTTPS beschermt een verbinding zodra die versleuteld is — maar het dwingt browsers niet die te gebruiken. Aanvallers buiten dat gat uit met «SSL stripping»: op elk gedeeld netwerk houden ze de bezoeker stilletjes op onveilig HTTP en lezen alles mee. HSTS vertelt de browser om gewoon HTTP voor uw domein volledig te weigeren, voor lange tijd, zodat het gat dichtgaat na het eerste bezoek. Het is één enkele responsheader, gratis toe te voegen, en in onze beoordeling is het echte punten waard omdat een ontbrekende of te korte waarde elke bezoeker op openbare wifi blootstelt.
Wat dit is, in gewone taal
U hebt vrijwel zeker HTTPS — het kleine hangslot in de browserbalk. Goed. Maar hier is het deel dat vrijwel niemand wordt verteld: HTTPS hebben is niet hetzelfde als het forceren.
HTTPS maakt een verbinding versleuteld zodra de browser besluit die te gebruiken. HSTS — kort voor HTTP Strict Transport Security — is de instructie die de browser het altijd laat gebruiken. Het is één enkele, onzichtbare regel die uw website aan elke bezoeker stuurt en die in feite zegt:
«Praat vanaf nu, voor mijn domein, alleen ooit met mij over de beveiligde verbinding. Nooit de onveilige. Probeer het niet eens.»
De browser onthoudt dat en gehoorzaamt het zolang als u opgeeft — doorgaans een jaar. Na het eerste beveiligde bezoek van een bezoeker zal hun browser simpelweg weigeren uw site over gewoon, onversleuteld HTTP te laden, zelfs als iets het probeert te forceren.
Zonder HSTS bestaat die «gebruik altijd de beveiligde versie»-regel niet — en aanvallers weten precies hoe ze het gat moeten uitbuiten.
Wat dit u kan kosten
Dit zijn realistische, alledaagse scenario’s. We noemen nooit een echt bedrijf; dit zijn illustraties van hoe het gat wordt gebruikt.
-
De afrekening in het koffietentje. Een klant opent uw winkel op cafewifi en gaat afrekenen. Een aanvaller op hetzelfde netwerk draait een gratis, bekend hulpmiddel dat de klant op gewoon HTTP houdt in plaats van HTTPS. De klant ziet wat eruitziet als uw normale site — geen waarschuwing, geen kapot hangslot op de plek waar ze zouden kijken — en typt hun kaartgegevens. De aanvaller leest elke toetsaanslag. Uw SSL-certificaat deed niets, omdat de verbinding nooit beveiligd mocht worden.
-
De reizende medewerker. Een personeelslid logt in op uw adminpaneel of webmail vanuit een hotel of luchthaven. Dezelfde degradatietruc vangt hun gebruikersnaam en wachtwoord op. Nu heeft de aanvaller een ingang tot uw bedrijf — niet omdat uw wachtwoordbeleid zwak was, maar omdat de loginpagina bereikbaar was over onveilig HTTP.
-
De deal die stokt. Een grotere klant stuurt u hun standaard beveiligingsvragenlijst voor het tekenen. Eén regel vraagt: «Handhaaft uw website HTTPS via HSTS?» Uw IT-contact moet «nee» antwoorden, en het inkoopproces pauzeert terwijl u haastig een gratis instelling van 15 minuten oplost die nu een rode vlag lijkt voor een koper.
-
De cyberverzekerings- of compliancecontrole. De scan van een verzekeraar, of een auditor die uw gegevensbeschermingshouding beoordeelt, markeert de ontbrekende header. Versleuteling van persoonsgegevens is een expliciete verwachting onder gegevensbeschermingsregels (AVG artikel 32), en «we hebben een certificaat maar handhaven het niet» is een zwakke positie om vanuit te staan.
-
Het valse gevoel van veiligheid. U betaalt voor SSL, het hangslot toont, en iedereen gaat ervan uit dat de site veilig is. Dat is hij grotendeels — tot een klant op een gedeeld netwerk zit, wat precies het moment is dat ze het kwetsbaarst zijn en het minst waarschijnlijk iets verkeerds opmerken.
De rode draad: de kosten zijn niet abstract. Het is de kaart of login van een echte klant, opgevangen op het slechtst denkbare moment, zonder dat er een alarm afgaat.
Wat het eigenlijk is
Wanneer een browser uw website om een pagina vraagt, stuurt uw server de pagina terug plus enkele onzichtbare «headers» — extra instructies die de browser leest maar de bezoeker nooit ziet. HSTS is een van die headers:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Drie delen tellen:
max-age— hoe lang (in seconden) de browser moet onthouden om HTTPS te forceren.31536000is één jaar. Dit is de kern ervan: te kort en het helpt nauwelijks.includeSubDomains— breid de regel uit naar elk subdomein (shop.,app.,mail.enzovoort), niet alleen uw hoofdadres.preload— meld uw domein aan bij een hoofdlijst ingebouwd in browsers, zodat bescherming geldt zelfs bij het allereerste verzoek van een bezoeker, voordat ze uw site ooit hebben gezien.
Waarom «het eerste bezoek» van belang is
HSTS heeft één inherente beperking: een browser gehoorzaamt de regel pas nadat die de header minstens één keer heeft gezien. Dus de allereerste verbinding van een gloednieuwe bezoeker is nog steeds een klein venster van blootstelling. Twee dingen versmallen het: een HTTP-naar-HTTPS-omleiding (die ze snel op de beveiligde versie brengt) en preload (die het venster volledig verwijdert). Daarom koppelt een complete opzet HSTS aan een behoorlijke omleiding.
Hoe «goed» eruitziet — en hoe het wordt gescoord
Onze controle leest uw live header en beoordeelt de max-age:
| max-age-waarde | Wat het betekent | Resultaat |
|---|---|---|
| 1 jaar of meer (≥ 31536000) | Uitstekend — de aanbevolen instelling | Volle punten |
| 6 maanden of meer (≥ 15768000) | Goed, maar niet het volle jaar | Gedeeltelijk |
| 1 dag of meer (≥ 86400) | Zwak — te kort om betrouwbaar te zijn | Laag / gedeeltelijk |
| Onder 1 dag, of helemaal geen header | In feite geen bescherming | Fail (hoge ernst) |
Dus een header die bestaat maar op een paar minuten is gezet, wordt als een fail behandeld — het lijkt geconfigureerd maar doet zijn werk niet. Streef naar één jaar. De controle noteert ook of includeSubDomains en preload aanwezig zijn.
Hoe los je het op (gratis, ~15 minuten)
Geef dit onderdeel aan wie uw website beheert — uw IT-persoon, webontwikkelaar of hostingsupport. De oplossing is gratis. Het is één enkele header, of een schakelaar in uw hostingplatform. Er valt niets te kopen.
Eerst één belangrijke volgorderegel: HSTS is plakkerig — eenmaal ingeschakeld zullen browsers gewoon HTTP voor uw domein weigeren voor de volle max-age. Bevestig dus dat HTTPS correct werkt op uw hoofdsite en elk subdomein voordat u het breed aanzet. Het veilige pad is: test met een korte waarde → bevestig dat niets breekt → verhoog naar één jaar.
Stap 1 — Zorg dat HTTPS overal al werkt
Bezoek uw site en belangrijke subdomeinen over https:// en bevestig dat ze schoon laden met een geldig certificaat. Bevestig ook dat gewone http://-verzoeken omleiden naar https://. (Doen ze dat niet, los dan eerst de HTTP-naar-HTTPS-omleiding op — HSTS gaat ervan uit dat die er is.)
Stap 2 — Voeg de header toe (kies uw platform)
Cloudflare (of vergelijkbare CDN): Dit is het makkelijkst. Ga naar SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) en schakel het in. Zet Max-Age op 6 maanden of 12 maanden, en schakel «Apply HSTS policy to subdomains» in zodra u zeker weet dat alle subdomeinen op HTTPS zitten.
Nginx: voeg toe binnen uw HTTPS-server-blok:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache: zorg dat mod_headers is ingeschakeld, voeg dan toe aan uw HTTPS virtual host:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Microsoft IIS: voeg toe aan web.config binnen <customHeaders>:
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
Opmerking over Google Workspace / Microsoft 365: deze drijven uw e-mail aan, niet uw websitehosting — HSTS wordt ingesteld waar uw openbare website daadwerkelijk leeft (uw CDN, webserver of sitebouwer), niet in de admin van Workspace/365. Zit uw site op een bouwer zoals Squarespace, Wix of Shopify, dan wordt HSTS meestal voor u geregeld; controleer hun SSL-/beveiligingsinstellingen als onze controle het markeert.
Stap 3 — Test klein, leg dan vast
Begin met max-age=300 (5 minuten). Bevestig dat de site overal nog perfect laadt. Verhoog dan naar max-age=31536000 (één jaar). Dat is de volle-punten-instelling.
Stap 4 (optioneel, gouden standaard) — preload
Zodra u zeker bent en een tijdje een jaarheader met includeSubDomains hebt gedraaid, kunt u uw domein indienen bij hstspreload.org om in browsers gebakken te worden. Dit sluit het eerste-bezoek-venster volledig. Behandel het als een bewuste verbintenis — een domein van de lijst verwijderen is traag.
Veelgemaakte fouten
max-agete kort instellen. Een waarde van een paar minuten of uren lijkt geconfigureerd maar biedt vrijwel geen bescherming — en onze controle behandelt alles onder een dag als een fail. Gebruik een jaar.includeSubDomainsaanzetten voordat subdomeinen HTTPS-klaar zijn. Als een subdomein niet volledig op HTTPS zit, kan de plakkerige regel het onbereikbaar maken voor bezoekers. Krijg elk subdomein eerst op HTTPS.- HSTS toevoegen maar geen HTTP-naar-HTTPS-omleiding hebben. HSTS gaat ervan uit dat bezoekers de beveiligde versie bereiken; zonder de omleiding is het eerste bezoek nodeloos blootgesteld. Los beide samen op.
- Direct naar
preloadspringen om «grondig te zijn». Preload is moeilijk ongedaan te maken. Verdien het geleidelijk na een stabiele jaarheader — overhaast het niet. - Aannemen dat het hangslot betekent dat u gedekt bent. Het hangslot en HSTS zijn verschillende dingen. U kunt een perfect certificaat hebben en deze controle toch falen.
Veelgestelde vragen
We hebben al HTTPS en het hangslot toont. Is dat niet genoeg?
Nee — en dit is het meest voorkomende misverstand. Het hangslot betekent dat een verbinding versleuteld KAN zijn; het dwingt browsers niet de versleutelde versie te gebruiken. Zonder HSTS kan een aanvaller op hetzelfde netwerk een bezoeker op gewoon HTTP houden (genaamd SSL stripping) en alles lezen wat ze typen, terwijl de klant een normaal ogende site ziet. HSTS is de instructie die «alleen versleuteld» verplicht maakt. HTTPS zonder HSTS is een vergrendelde deur die niet daadwerkelijk op slot zit.
Is dit duur of riskant om aan te zetten?
De oplossing zelf is gratis — het is één regel in uw webserver of een schakelaar in uw CDN — en kost ongeveer 15 minuten. De ene echte waarschuwing: HSTS is plakkerig. Zodra een browser het ziet, weigert die gewoon HTTP voor uw domein zolang als u opgaf. U moet er dus zeker van zijn dat HTTPS werkt op uw hoofdsite ÉN elk subdomein voordat u het breed inschakelt. Begin met een korte testwaarde, bevestig dat niets breekt, en verhoog dan naar een jaar. In die volgorde gedaan is het risico verwaarloosbaar.
Hoe ziet «goed» er eigenlijk uit?
Een max-age van ten minste één jaar (31536000 seconden). Onze controle kent volle punten toe bij een jaar of meer, gedeeltelijke punten bij zes maanden, zwak/gedeeltelijk bij een dag, en behandelt alles onder een dag als in feite afwezig. De sterkste opzet voegt ook includeSubDomains toe (dekt shop.uwsite.com, app.uwsite.com, enz.) en preload (bakt bescherming in browsers zodat zelfs het allereerste bezoek veilig is).
Wat is «preload» en hebben we dat nodig?
HSTS beschermt een bezoeker pas NADAT hun browser de header minstens één keer heeft gezien — dus het eerste verzoek van een gloednieuwe bezoeker is nog steeds een klein venster. De HSTS-preloadlijst, ingebouwd in Chrome, Firefox, Safari en Edge, sluit dat venster door uw domein vooraf aan browsers te leveren. Het is optioneel en een iets grotere verbintenis (verwijdering is traag), maar het is de gouden standaard. Voor de meeste kleine bedrijven is een max-age van een jaar met includeSubDomains al een sterk, veilig resultaat; preload is de extra stap zodra u gesetteld bent.
We zitten op Squarespace / Wix / Shopify — moeten we überhaupt iets doen?
De meeste volledig-gehoste websitebouwers (Squarespace, Wix, Shopify en dergelijke) handhaven HTTPS en stellen vaak HSTS automatisch voor u in — dus u slaagt mogelijk al zonder iets te doen. De uitzondering is wanneer u een aangepast domein of CDN voor uw site gebruikt; dan kan de instelling tussen wal en schip vallen. Draai de controle: slaagt die, dan bent u klaar. Markeert die, dan is de oplossing de schakelaar in de SSL-/beveiligingsinstellingen van uw platform, of één regel bij uw CDN.
Als we het niet oplossen, verlaagt dat onze beoordeling?
Ja. HSTS is een gescoorde webbeveiligingscontrole, niet informatief — een ontbrekende of te korte header kost punten en wordt als hoge ernst beoordeeld, omdat het de gegevens van uw bezoekers rechtstreeks blootstelt op gedeelde netwerken. Het is ook een van de goedkoopste punten om terug te winnen: één gratis header, ongeveer 15 minuten werk.