Wij zijn |
Security headers – het wat en waarom
Wanneer het aankomt op de beveiliging van een website, zijn er tal van factoren die invloed hebben op de veiligheid van gebruikers en gegevens. Een essentieel onderdeel daarvan is het juist instellen van security headers – ook wel HTTP security headers genoemd. Deze headers geven browsers specifieke instructies over wat er wel en niet is toegestaan bij het laden van een webpagina. Door het correct configureren van security headers kunnen verschillende kwetsbaarheden worden tegengegaan, waaronder Cross-Site Scripting (XSS), clickjacking en MIME-sniffing.
In deze blogpost wordt uitgelegd wat security headers precies zijn, waarom ze belangrijk zijn, en hoe ze ingezet kunnen worden om webapplicaties beter te beschermen tegen veelvoorkomende bedreigingen. Ook worden praktische voorbeelden gegeven van veilige configuraties die direct toepasbaar zijn.
Security headers: het wat en waarom
De achtergrond van HTTP security headers
Zelf security headers configureren en controleren
Na het begrijpen van het belang van security headers is de volgende stap het controleren van de huidige configuratie van je website. Dit kan eenvoudig met gratis tools zoals Securityheaders.com.
Door de URL van je website in te voeren, krijg je een overzicht van welke security headers actief zijn, hoe deze zijn ingesteld, en welke onderdelen verbetering nodig hebben. De tool geeft daarnaast praktische aanbevelingen die je direct kunt toepassen.
Dit vormt een laagdrempelige, maar waardevolle eerste stap in het versterken van je webbeveiliging. Regelmatig controleren en verbeteren van je headers helpt om mee te blijven groeien met actuele beveiligingsstandaarden.
Wanneer gebruik wordt gemaakt van Securityheaders.com, biedt de tool niet alleen inzicht in de aanwezige security headers, maar geeft deze ook directe feedback over potentieel onveilige instellingen. Daarnaast worden praktische suggesties aangereikt om configuraties te verbeteren en zo de algehele beveiliging van de webapplicatie te versterken.
Voor meer verdieping en technische onderbouwing zijn de ICT-beveiligingsrichtlijnen voor webapplicaties van het Nationaal Cyber Security Centrum (NCSC) een waardevolle bron. Deze richtlijnen zijn beschikbaar via de website van het NCSC en vormen een solide basis voor het veilig configureren van headers en andere beveiligingsmaatregelen.
Onderstaand volgt per security header een beknopte toelichting, inclusief het risico bij ontbreken en een voorbeeld van een veilige configuratie.
HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS) helpt om websites te beschermen tegen zogenaamde downgrade-aanvallen en het kapen van cookies. Stel je voor: je hebt een website, bijvoorbeeld www.example.com, en je hebt een SSL-certificaat geïnstalleerd om je website via HTTPS beschikbaar te maken. Gebruikers die jouw site nog via HTTP benaderen, worden normaal gesproken doorgestuurd naar de HTTPS-versie. Maar in dat korte moment waarin ze via HTTP verbinden, kunnen aanvallers proberen het verkeer te onderscheppen. De HSTS-header voorkomt dit door browsers te instrueren om voortaan alleen nog via HTTPS met je site te verbinden.
strict-transport-security: max-age=63072000; includeSubDomains; preload
Content Security Policy (CSP)
Content Security Policy (CSP) is een andere krachtige beveiligingsmaatregel. Deze header bepaalt welke externe bronnen – zoals scripts, stijlen of afbeeldingen – geladen mogen worden op je webpagina. Zo voorkom je dat kwaadaardige scripts via bijvoorbeeld invoervelden of externe bronnen worden geïnjecteerd (denk aan XSS-aanvallen). Als je alleen scripts van je eigen domein wilt toestaan, kun je dat afdwingen met CSP. Dit beperkt de aanvalsmogelijkheden aanzienlijk.
content-security-policy: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'none'
Let op: het instellen van een CSP vereist nauwkeurigheid. Een te strikte configuratie kan legitieme functionaliteit op je website blokkeren, terwijl een te losse configuratie onvoldoende bescherming biedt.
Voor een stapsgewijze uitleg over het veilig opbouwen van een werkende CSP zonder functionaliteit te breken, verwijzen we graag naar onze andere blogpost:
👉 Maak je website veiliger met een Content-Security-Policy (CSP)
X-Content-Type-Options
De X-Content-Type-Options header zorgt ervoor dat browsers het bestandstype niet gaan “raden”, maar precies volgen wat jij hebt opgegeven. Dit voorkomt dat bijvoorbeeld een afbeelding per ongeluk als script wordt uitgevoerd, wat kan leiden tot code-executie via MIME type spoofing.
x-content-type-options: nosniff
X-XSS-Protection
Hoewel moderne browsers inmiddels hun eigen XSS-bescherming hebben ingebouwd en de ondersteuning voor deze header is afgenomen, wordt de X-XSS-Protection header soms nog gebruikt om oudere browsers extra instructies te geven bij het detecteren van vermoedelijke Cross-Site Scripting-aanvallen. Wanneer correct geconfigureerd, kan deze header ervoor zorgen dat een pagina niet wordt geladen als een potentiële XSS-aanval wordt gedetecteerd.
Zonder deze header kunnen oudere browsers XSS-aanvallen doorlaten of zelfs onbedoeld versterken door onveilige filtering.
x-xss-protection: 1; mode=block
Let op: het Nationaal Cyber Security Centrum en browsers als Chrome en Edge adviseren deze header niet langer actief te gebruiken. Het is beter om XSS volledig te mitigeren via een strikte Content Security Policy en veilige ontwikkelpraktijken.
X-Frame-Options
Met de X-Frame-Options header voorkom je dat jouw site in een <frame>
of <iframe>
op een andere (kwaadaardige) website wordt ingeladen. Dit beschermt tegen clickjacking-aanvallen, waarbij gebruikers op knoppen of links klikken zonder dat ze het doorhebben. Een simpele maar effectieve maatregel.
x-frame-options: DENY
Of gebruikSAMEORIGIN
als bepaalde functionaliteit framing binnen hetzelfde domein vereist
Referrer-Policy
De Referrer-Policy header helpt om gevoelige URL-informatie te beschermen bij navigatie tussen pagina’s of domeinen. Zonder deze header kan informatie zoals tokens of zoekopdrachten per ongeluk worden meegestuurd naar externe websites. Door het gedrag van de browser op dit vlak te beperken, verbeter je de privacy van je gebruikers.
referrer-policy: strict-origin-when-cross-origin
Permissions-Policy
De Permissions-Policy header (voorheen Feature-Policy) geeft je controle over browserfeatures zoals toegang tot camera, microfoon of locatie. Als je deze functies niet actief gebruikt, is het verstandig ze expliciet uit te schakelen, zodat externe scripts er geen misbruik van kunnen maken.
permissions-policy: geolocation=(), camera=(), microphone=()
De conclusie
Hoe kunnen wij u helpen?
Certified Azure Red Team Expert (CARTE) review
In this blog post, I share my personal journey and insights from undertaking the Certified Azure Red Team Expert (CARTE) certification offered by Altered Security.
OSCP: Offensive Security Certified Professional uitgelegd
In deze blogpost lees je alles over het Offensive Security Certified Professional (OSCP) certicaat. We leggen uit wat het is en wat je eraan hebt.
SMB misconfiguraties – hoe SMB veilig instellen
Veelvoorkomende SMB-misconfiguraties, zoals het toelaten van verouderde protocollen (SMBv1) en ontbreken van SMB Signing, maken systemen kwetsbaar voor aanvallen. Het afdwingen van SMB Signing, uitschakelen van SMBv1 en blokkeren van uitgaand SMB-verkeer naar internet helpen om deze risico’s te minimaliseren.