Defaults.Exposed

Defaults.ExposedOplossingen › 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

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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:

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-waardeWat het betekentResultaat
1 jaar of meer (≥ 31536000)Uitstekend — de aanbevolen instellingVolle punten
6 maanden of meer (≥ 15768000)Goed, maar niet het volle jaarGedeeltelijk
1 dag of meer (≥ 86400)Zwak — te kort om betrouwbaar te zijnLaag / gedeeltelijk
Onder 1 dag, of helemaal geen headerIn feite geen beschermingFail (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

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.