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

  • Server en X-Powered-By: Deze headers tonen specifieke server- en softwareversies (bijv. PHP/8.1.0 of Apache/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.

Verder lezen

Vertel ons wat u wilt laten groeien.

Eén team. Drie kantoren. Zesentwintig talen. Stuur ons uw uitdaging en u krijgt een inhoudelijk antwoord van een specialist — geen verkooppraatje.

Een schriftelijk voorstel binnen één werkdag, in uw taal.