Deel 7 van de serie "EU-webbeveiliging: in 10 stappen naar een betere rating"
X-Content-Type-Options
Het probleem
Browsers proberen soms het type van een bestand te "raden" — ongeacht de Content-Type-header. Een afbeelding die eigenlijk JavaScript bevat? De browser voert het uit. Dit heet MIME-sniffing en het is een gateway voor injectieaanvallen.
De oplossing
X-Content-Type-Options: nosniff
Eén header, één waarde. De browser accepteert alleen bestanden met het opgegeven MIME-type.
Adoptie: 27,7%. Bijna driekwart van de EU-websites is kwetsbaar voor MIME-verwarringsaanvallen.
Hoe u het instelt
Nginx:
add_header X-Content-Type-Options "nosniff" always;
Apache:
Header always set X-Content-Type-Options "nosniff"
Er is maar één geldige waarde (nosniff), geen configuratie, geen bijwerkingen. Geen reden om het niet in te stellen.
Referrer-Policy
Het probleem
Wanneer een gebruiker op een externe link op uw website klikt, stuurt de browser standaard de volledige URL van de bronpagina mee als Referrer-header. Dit kan gevoelige informatie lekken:
https://uw-domein.com/dashboard?user=12345&token=abchttps://uw-domein.com/admin/reports/vertrouwelijke-audithttps://uw-domein.com/search?q=medische+symptomen
De beheerder van de doelsite ziet de volledige URL — inclusief queryparameters, paden en sessietokens.
De oplossing
Referrer-Policy: strict-origin-when-cross-origin
Met dit beleid stuurt de browser:
- Bij navigatie naar een ander domein: alleen de origin (https://uw-domein.com), geen paden
- Binnen uw eigen domein: de volledige URL (nuttig voor analytics)
- Bij HTTPS-naar-HTTP-downgrade: niets
Adoptie: 13,1%.
Hoe u het instelt
Nginx:
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Apache:
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Alternatieve beleidsregels
| Beleid | Gedrag | Aanbeveling |
|---|---|---|
no-referrer |
Stuur nooit referrer | Te streng (breekt analytics) |
origin |
Stuur altijd alleen origin | Goed, maar verliest interne paden |
strict-origin-when-cross-origin |
Origin cross-domain, volledig intern | Aanbevolen |
same-origin |
Volledig intern, niets extern | Goed voor gevoelige applicaties |
Beide samen: het Nginx-snippet
# Beveiligingsheaders — klaar om te kopiëren
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Vier headers, vier regels. In uw Nginx-configuratie of een include-bestand. Gecombineerd met Deel 1-3 van deze serie dekken ze de zes belangrijkste beveiligingsheaders.
Controleer uw headers
Volgende week in Deel 8: CAA-records — welke certificeringsautoriteit mag certificaten uitgeven voor uw domein?