Direct naar de inhoud

Cookie-instellingen

Kies per soort welke cookies je toestaat. Je kunt je keuze altijd wijzigen via Cookie-instellingen onderaan elke pagina. Privacyverklaring

Noodzakelijk

Altijd aan

Nodig om in te loggen, je winkelwagen te bewaren en je keuzes te onthouden. Deze staan altijd aan.

Welke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: je sessie en ingelogd blijven
  • weboke_basket: je winkelwagen
  • wkBtwIncl: prijzen met of zonder btw tonen
  • wok_cookies: je cookiekeuze, 12 maanden

Meet welke advertentie tot een bezoek of bestelling leidt, zodat we niet betalen voor advertenties die niets doen.

Welke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), tot 90 dagen
  • OpenAI Ads, advertenties in ChatGPT
  • wok_aff: via welke partner je bij ons kwam (affiliateprogramma), 60 dagen

4,6

Land en taal

Elk land heeft zijn eigen site, met prijzen en btw van dat land.

Bekijken

HSTS en beveiligingsheaders voor je website

Bij elke pagina stuurt je webserver headers mee: korte regels met instructies voor de browser. Ze bepalen voor een deel hoe veilig de browser met je site omgaat. Hier lees je wat HSTS is, welke andere beveiligingsheaders er zijn en hoe je ze instelt en test.

Eerst moet je site een werkend certificaat hebben en bezoekers naar https sturen. Dat lees je in SSL-certificaat activeren, vernieuwen en problemen oplossen en Bezoekers verplicht doorsturen naar https.

Wat doet HSTS?

Doorsturen naar https heeft één zwak moment: het eerste verzoek via http gaat nog onversleuteld. Iemand op hetzelfde netwerk, bijvoorbeeld op openbare wifi, kan dat verzoek onderscheppen. HSTS (HTTP Strict Transport Security) lost dat op. Je site stuurt via https deze header mee:

Strict-Transport-Security: max-age=31536000

De browser onthoudt dan dat hij je site alleen via https mag openen. Typt een bezoeker later http://, dan maakt de browser er zelf https van, nog voordat er iets over het netwerk gaat. Een HSTS-header die via gewoon http binnenkomt, negeert de browser.

OnderdeelBetekenis
max-ageHoe lang de browser het onthoudt, in seconden. De test van internet.nl rekent minstens een jaar (31536000) als voldoende.
includeSubDomainsGeldt ook voor alle subdomeinen, zoals shop.jouwdomein.nl en mail.jouwdomein.nl.
preloadJe vraagt om opname in de lijst die in browsers is ingebouwd (hstspreload.org). Dan is zelfs het allereerste bezoek beschermd. Daarvoor zijn onder meer een jaar, includeSubDomains en https op alle subdomeinen nodig. Er weer af komen duurt lang.
max-age=0Wist de onthouden instructie weer, bij het volgende bezoek via https.
Zet HSTS pas aan als https overal werkt. Heeft een browser HSTS onthouden en ziet hij een certificaatfout, dan krijgt de bezoeker geen knop om toch door te gaan. Verloopt je certificaat of klopt het niet voor www, dan is je site voor die bezoekers onbereikbaar tot het is opgelost. Met includeSubDomains geldt dat ook voor elk subdomein, zoals een oude camera- of printerpagina zonder certificaat. Bouw het daarom op: begin met een korte max-age, bijvoorbeeld een dag (86400), controleer of alles werkt en verhoog in stappen naar een jaar.

HSTS bij WebOké

Op de meeste van onze servers stuurt de webserver HSTS standaard mee voor elke website die via https wordt geopend: Strict-Transport-Security: max-age=31536000. Dat is een jaar, zonder includeSubDomains en zonder preload. Daarvoor hoef je niets te doen. Op een paar servers staat het niet standaard aan; daar zet je het zelf aan. Of je site HSTS al meestuurt en met welke max-age, zie je in de ontwikkelaarstools van je browser of in de test van internet.nl (zie hieronder).

De HSTS-schakelaar in DirectAdmin

In DirectAdmin ga je naar Domeinen en klik je op je domeinnaam. Staat Beveiligde SSL verbinding aan, dan zie je bij HSTS de schakelaar HTTP Strict Transport Security inschakelen. Klik daarna op Bewerken om op te slaan. Hoe dat stap voor stap gaat, lees je in Bezoekers altijd naar https sturen.

Stuurt je site al HSTS mee, dan heb je de schakelaar niet nodig. Zet hem alleen aan als je site nog geen HSTS stuurt. Stel HSTS op één plek in: in DirectAdmin of in .htaccess, niet allebei. Krijgt de browser twee HSTS-headers, dan gebruikt hij alleen de eerste.

De andere beveiligingsheaders

HeaderWaartegenWaarde om mee te beginnen
X-Content-Type-OptionsDe browser gaat zelf raden wat een bestand is, waardoor een geüpload "plaatje" als script kan worden uitgevoerd.nosniff (de enige geldige waarde)
Content-Security-Policy: frame-ancestors of X-Frame-OptionsClickjacking: een andere site laadt jouw pagina onzichtbaar in een frame, zodat bezoekers ongemerkt op jouw knoppen klikken.frame-ancestors 'self', of de oudere header X-Frame-Options: SAMEORIGIN
Referrer-PolicyBij een klik naar een andere site stuurt de browser het adres van de vorige pagina mee, soms met een zoekterm of ordernummer erin.strict-origin-when-cross-origin, of strenger same-origin of no-referrer. Internet.nl rekent alleen de strenge waarden als goed.
Permissions-PolicyBepaalt welke browserfuncties je pagina en ingesloten frames mogen gebruiken, zoals camera, microfoon en locatie.camera=(), microphone=(), geolocation=() zet die drie uit. Gebruikt je site een van die functies, laat hem dan weg.
Content-Security-Policy (volledig)Beperkt vanaf welke plekken scripts, stijlen en afbeeldingen mogen laden. Dat maakt ingevoegde kwaadaardige scripts (XSS) veel moeilijker.Maatwerk per site. Vermijd unsafe-inline, unsafe-eval en wildcards.

Instellen in .htaccess

Zet deze regels bovenaan het bestand .htaccess in de map public_html van je domein. Maak eerst een kopie van het bestand.

<IfModule mod_headers.c>
  Header always set X-Content-Type-Options "nosniff"
  Header always set Content-Security-Policy "frame-ancestors 'self'"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
  # Alleen als je site nog geen HSTS meestuurt (zie hierboven):
  # Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>

Voeg includeSubDomains pas toe als je zeker weet dat elk subdomein https heeft. Gebruik je WordPress, dan kun je de headers ook met een plugin instellen. Kies een bekende plugin die nog wordt bijgewerkt, en stel elke header op één plek in: in de plugin of in .htaccess.

Een volledige Content-Security-Policy kan je site breken: een te strenge regel blokkeert bijvoorbeeld je statistieken, je betaalknop, een ingesloten video of je chatvenster. Test hem eerst met de header Content-Security-Policy-Report-Only. Die blokkeert niets, maar laat in de console van de browser zien wat er geblokkeerd zou worden. Laat dit bij twijfel over aan je webbouwer, of begin alleen met frame-ancestors.

Testen

  • Internet.nl: vul je domein in bij de websitetest op internet.nl.
  • Je browser: open je site, druk op F12 (of kies Inspecteren), ga naar het tabblad Netwerk, laad de pagina opnieuw en klik op het eerste verzoek. Onder Antwoordheaders (Response Headers) zie je alles wat je server meestuurt.
  • De opdrachtregel: curl -sI https://jouwdomein.nl/ toont de headers.

Controleer na elke wijziging of je site, formulieren en betaalpagina nog werken. Houd daarnaast je CMS, plugins en thema's bijgewerkt. Zie wp-login.php van WordPress beveiligen.

Verder lezen

Meer leren? Volg de gratis cursus Veilig online voor ondernemers, les 4.2 Je website: https, HSTS en beveiligingsheaders, of de gratis WordPress-cursus, les 7.4 De site verharden: rechten, headers en beveiligingsplugins.

Was dit artikel nuttig?

← Terug naar DirectAdmin en WebOké controlepaneel

Even geduld…

Stel je domeinen in

Regel per domein de nameservers, de koppeling aan je hosting en wie de eigenaar wordt.

Je domeinen laden…