Veiligheidsheaders: bescherm je website met één regel
Je kent de Content Security Policy al — een HTTP-header die de browser vertelt welke scripts en bestanden geladen mogen worden. Maar CSP is niet de enige veiligheidsheader. Er zijn er nog een paar die samen een solide basisbeveiliging vormen voor elke website.
Wat zijn HTTP-headers?
Elke keer dat een browser een pagina opvraagt, stuurt de server een antwoord terug. Dat antwoord bevat niet alleen de pagina zelf, maar ook headers — onzichtbare regels met instructies voor de browser. Veiligheidsheaders zijn headers die de browser vertellen hoe hij zich moet gedragen om aanvallen te voorkomen.
De vier belangrijkste veiligheidsheaders
Strict-Transport-Security (HSTS)
Deze header dwingt de browser om jouw website altijd via HTTPS te laden, ook als een bezoeker http:// intypt of op een oude HTTP-link klikt.
Strict-Transport-Security: max-age=31536000; includeSubDomains
max-age=31536000 betekent: onthoud dit een jaar (31.536.000 seconden). De browser zal in die periode nooit meer via HTTP proberen te verbinden.
X-Frame-Options
Voorkomt clickjacking: een aanval waarbij jouw pagina onzichtbaar in een <iframe> op een andere website wordt geladen. De aanvaller legt dan zijn eigen knoppen over jouw pagina heen, zodat een nietsvermoedende bezoeker onbedoeld op iets klikt.
X-Frame-Options: DENY
DENY betekent: mijn pagina mag nooit in een iframe geladen worden. Gebruik SAMEORIGIN als je wel iframes binnen je eigen domein wilt toestaan.
X-Content-Type-Options
Voorkomt dat de browser bestanden verkeerd interpreteert. Zonder deze header kan een browser een tekstbestand dat kwaadaardige JavaScript bevat toch uitvoeren als script — een techniek die "MIME sniffing" heet.
X-Content-Type-Options: nosniff
nosniff zegt: geloof altijd het opgegeven bestandstype, doe geen gissingen.
Referrer-Policy
Bepaalt hoeveel informatie over de huidige URL de browser meestuurt als een bezoeker op een link naar een andere website klikt. Zonder deze header kan de volledige URL — inclusief eventuele gevoelige parameters — worden gedeeld met externe partijen.
Referrer-Policy: strict-origin-when-cross-origin
Dit is de aanbevolen standaardwaarde: stuur alleen de domeinnaam mee bij links naar andere websites, en stuur niets mee bij onveilige (HTTP) verbindingen.
Overzicht
| Header | Beschermt tegen |
|---|---|
Strict-Transport-Security | Verbindingen via onveilig HTTP |
X-Frame-Options | Clickjacking via iframes |
X-Content-Type-Options | MIME sniffing |
Referrer-Policy | Lekken van URL-informatie |
Content-Security-Policy | XSS en het laden van onbetrouwbare scripts |
Gebruik securityheaders.com om te controleren welke veiligheidsheaders jouw website al verstuurt — en welke nog ontbreken. Je krijgt direct een rapportcijfer en uitleg per header.
Veiligheidsheaders kosten je één regel configuratie per header. De bescherming die ze bieden, is het meer dan waard.