Engineering
HTTP-beveiligingsheaders: De complete gids
HSTS, CSP, X-Frame-Options en Permissions-Policy correct instellen. Voorkom XSS, clickjacking en data-lekken met HTTP-headers.
Het beveiligen van een website stopt niet bij het installeren van een gratis SSL-certificaat. Zonder de juiste HTTP-beveiligingsheaders blijft uw applicatie kwetsbaar voor clickjacking, cross-site scripting (XSS) en gegevensonderschepping.
Beveiligingsheaders zijn eenvoudige configuratieregels die uw webserver meestuurt in het HTTP-antwoord. Ze instrueren de browser van de bezoeker om strikte veiligheidsmaatregelen af te dwingen.
Hier is het complete overzicht van de essentiële headers die elke moderne website moet implementeren.
1. Strict-Transport-Security (HSTS)
HSTS dwingt browsers af om gedurende een vooraf ingestelde periode uitsluitend via een versleutelde HTTPS-verbinding te communiceren met uw domein. Dit voorkomt SSL-stripping aanvallen.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age=31536000: Geldig voor één jaar.includeSubDomains: Geldt ook voor alle subdomeinen.preload: Geeft toestemming om uw domein op te nemen in de hardcoded browser-preloadlijsten van Chrome en Firefox.
2. Content-Security-Policy (CSP)
De krachtigste en meest effectieve beveiligingsheader. CSP bepaalt exact welke bronnen (scripts, stijlen, afbeeldingen, lettertypen, frames) door de browser mogen worden geladen en uitgevoerd.
Content-Security-Policy: default-src 'self'; script-src 'self' https://trustedscripts.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; frame-ancestors 'none';
Met een strikte CSP blokkeert u vrijwel elke vorm van Cross-Site Scripting (XSS), omdat geïnjecteerde kwaadaardige scripts simpelweg worden geweigerd door de browser.
Tip: Begin altijd met Content-Security-Policy-Report-Only om schendingen te loggen zonder functionaliteit op uw live site te breken.
3. X-Frame-Options
Voorkomt dat uw pagina's worden ingeladen in een <frame>, <iframe> of <object> op een andere website. Dit beschermt gebruikers tegen clickjacking (waarbij een onzichtbare laag over uw site wordt gelegd om ongeziene acties uit te lokken).
X-Frame-Options: DENY
(Of SAMEORIGIN als u eigen iframes binnen hetzelfde domein toestaat).
4. X-Content-Type-Options
Voorkomt dat browsers het MIME-type van een bestand 'raden' (MIME-sniffing) wanneer de server een afwijkend content-type declareert.
X-Content-Type-Options: nosniff
Dit sluit de aanvalsvector waarbij een geüploade afbeelding stiekem als uitvoerbaar script wordt geïnterpreteerd.
5. Referrer-Policy
Bepaalt hoeveel verwijzingsinformatie (referrer) wordt meegestuurd wanneer een bezoeker via een link naar een externe website navigeert.
Referrer-Policy: strict-origin-when-cross-origin
Dit stuurt het volledige URL-pad binnen uw eigen domein, maar deelt uitsluitend de domeinnaam (zonder gevoelige queryparameters of tokens) met externe partijen.
6. Permissions-Policy
Bepaalt welke hardware- en browserfuncties (zoals camera, microfoon, geolocatie, fullscreen, betaal-API's) mogen worden gebruikt door uw pagina of ingesloten widgets.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(self)
Headers die u moet verwijderen
ServerenX-Powered-By: Deze headers tonen specifieke server- en softwareversies (bijv.PHP/8.1.0ofApache/2.4.41). Dit biedt kwaadwillenden gratis informatie om gerichte exploits te testen. Verberg deze headers altijd in uw serverconfiguratie.X-XSS-Protection: Verouderd en vervangen door CSP. Het inschakelen ervan kan in moderne browsers zelfs kwetsbaarheden creëren.
Test uw domein altijd via securityheaders.com voor een onafhankelijke A+ audit.