Document toolboxDocument toolbox


Cyber Response Team


HTTP Security Headers

1. Inleiding

In de moderne digitale wereld is de veiligheid van webapplicaties cruciaal, ook voor lokale besturen die gevoelige informatie verwerken en diensten aan hun gemeenschap leveren. HTTP Security Headers spelen een belangrijke rol bij het versterken van de beveiliging van webapplicaties omdat ze extra beveiligingsmaatregelen toevoegen aan HTTP-responses. Deze headers helpen bij het beschermen van webapplicaties tegen verschillende aanvallen en kwetsbaarheden. 

Via dit kennisartikel willen we een overzicht geven van de HTTP Security Headers die we lokale besturen aanbevelen te implementeren. Gezien de technische aard van dit artikel, zal dit voornamelijk nuttige informatie bieden voor onder andere domeinbeheerders en web ontwikkelaars.  

2. Wat zijn HTTP Security Headers? 

HTTP Security Headers zijn kleine stukjes informatie die door een webserver worden meegegeven als reactie op een HTTP-verzoek. Ze bevatten instructies voor de browser over hoe met de ontvangen webpagina om te gaan en welke beveiligingsmaatregelen toe te passen. Deze headers zijn van cruciaal belang om beveiligingsrisico’s te minimaliseren en te beschermen tegen aanvallen zoals Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), en andere potentiële bedreigingen.  

3. Hulpmiddelen 

Voor het implementeren en testen van HTTP Security Headers kunnen verschillende hulpmiddelen worden gebruikt. Enkele suggesties zijn: 

  • Security Headers: dit is een online tool voor het analyseren van de HTTP Security Headers van een website. 

  • Mozilla Observatory: dit is een web gebaseerde scanner voor veiligheidsconfiguraties.  

4. De drie belangrijkste HTTP Security Headers voor lokale besturen

Content Security Policy (CSP)

Content Security Policy bepaalt welke bronnen mogen worden geladen op een webpagina. Dit voorkomt onder andere XSS-aanvallen door te beperken welke scripts en bronnen mogen worden uitgevoerd en geladen. 

Een sterke Content-Security-Policy maakt volgende HTTP Headers overbodig: 

  • X-XSS-Protection dmv het unsafe-inline attribuut. 

  • X-Frame-Options dmv het frame-ancestors attribuut.

CSP Attributen 

De tabel hieronder biedt een overzicht van de belangrijkste CSP attributen, die elk een specifieke rol spelen in het beveiligen van uw webapplicatie tegen verschillende soorten aanvallen. 

Waarde

Omschrijving

Waarde

Omschrijving

Base-uri

Definieer de basis-URI voor relative URI’s.

default-src

Definieer het laadbeleid voor alle resources in het geval dat de specifieke richtlijn voor een bepaald soort middelen niet is gedefinieerd (fallback). 

script-src

Definieer welke scripts de beschermde bron kan uitvoeren. 

object-src

Definieer vanwaar de beschermde bron plugins kan laden. 

style-src

Definieer welke stijlen (CSS) kunnen worden toegepast op de beschermde bron. 

img-src

Definieer waar vandaan de beschermde bron afbeeldingen kan laden. 

media-src

Definieer van waar de beschermde bron video en audio kan laden. 

frame-src

(Verouderd en vervangen door child-src) Definieer van waar de beschermde bron frames kan insluiten. 

child-src

Definieer waar de beschermde bron frames kan insluiten. 

frame-ancestors

Definieer van waar de beschermde bron kan worden ingesloten in frames. 

Dit attribuut vervangt de X-Frame-Options header. 

font-src

Definieer van waar de beschermde bron lettertypes kan laden. 

connect-src

Definieer welke URI's de beschermde bron kan laden met behulp van scriptinterfaces. 

manifest-src

Definieer vanwaar de beschermde bron manifests kan laden. 

form-action

Definieer welke URI's gebruikt kunnen worden als actie van HTML-formulierelementen. 

sandbox

Specificeer een HTML-sandbox policy dat de browser toepast op de beschermde bron. 

script-nonce

Definieer de uitvoering van het script door de aanwezigheid van de gespecificeerde nonce op scriptelementen te eisen. 

plugin-types

Definieer de set van plugins die kunnen worden aangeroepen door de beschermde bron door het beperken van de soorten bronnen die kunnen worden ingesloten. 

reflected-xss

Gereflecteerde cross-site scriptaanvallen te filteren of te blokkeren, gelijkwaardig aan de effecten van de niet-standaard X-XSS-Protection-header , te activeren of te deactiveren.  

block-all-mixed-content

Voorkom dat de gebruikersagent gemengde inhoud laadt.  

upgrade-insecure-requests

Instrueer de browser om onveilige HTTP-bronnen te downloaden met behulp van HTTPS.  

report-uri

(Afgeschreven en vervangen door report-to) Specificeert een URI waarnaar de gebruikersagent rapporten over beleidsovertredingen stuurt.  

report-to

Specificeert een groep (gedefinieerd in de Report-To header) waarnaar de gebruikersagent rapporten over beleidsovertredingen stuurt.  

Hulpmiddelen  

Een aantal tools bieden de mogelijkheid om CSP headers te genereren, bijvoorbeeld:  

HTTP Strict Transport Security (HSTS)

HTTP Strict Transport Security zorgt ervoor dat de communicatie tussen de browser en de server plaatsvindt over een beveiligde HTTPS-verbinding. Dit minimaliseert het risico van man-in-the-middle-aanvallen. 

Waarde

Omschrijving

Waarde

Omschrijving

max-age=SECONDS  

De tijd, in seconden, dat de browser moet onthouden dat deze site alleen toegankelijk is via HTTPS.  

includeSubDomains  

Als deze optionele parameter wordt gespecificeerd, geldt deze regel ook voor alle subdomeinen van de site.  

Opgelet! HSTS activeren voor alle subdomeinen betekent dat deze, indien ze niet correct voorzien zijn van een geldig certificaat, niet meer toegankelijk zullen zijn.  

Voorbeeld  

strict-transport-security: max-age=63113904 ; includeSubDomains 

Hulpmiddelen  

X-Frame-Options 

De X-Frame-Options header voorkomt dat een webpagina wordt ingesloten binnen een iframe. Dit is essentieel om te voorkomen dat kwaadwillende websites uw inhoud insluiten, wat kan leiden tot clickjacking-aanvallen. De CSP frame-ancestors richtlijn is een geavanceerder en flexibeler alternatief voor de X-Frame-Options header en geniet de voorkeur vanwege zijn uitgebreidere capaciteiten. Wanneer beide headers aanwezig zijn, geven moderne browsers voorrang aan de CSP frame-ancestors richtlijn. 

Waarde

Omschrijving

Waarde

Omschrijving

deny

Voorkomt dat de pagina binnen enig frame geladen wordt, ongeacht de bron. 

sameorigin

Staat alleen toe dat de pagina binnen een frame geladen wordt als het frame op dezelfde oorsprong gehost is. 

allow-from uri

Deze specifieke waarde wordt niet meer algemeen ondersteund en moet met voorzichtigheid worden gebruikt. 

Het is aanbevolen om de CSP frame-ancestors richtlijn te hanteren in plaats van de X-Frame-Options header voor een fijnmazigere controle. Als u echter besluit om X-Frame-Options te gebruiken, stel het dan in op de waarde "DENY" voor maximale beveiliging. 

5. Additionele HTTP Security Headers 

  1. Permanente HTTPS Redirect: Gebruik een permanente redirect (HTTP status code 301) van HTTP naar HTTPS om Man-in-the-middle aanvallen te voorkomen. 

  2. HTTP Public Key Pinning (HPKP): Aanbevolen om niet meer te gebruiken vanwege belangrijke risico's en beperkingen. 

  3. X-Content-Type-Options: Voorkomt dat de browser bestanden interpreteert als een ander MIME-type dan gespecificeerd, met het 'nosniff' attribuut. 

  4. Permissions-Policy: Beperkt de functionaliteiten van browsers voor bepaalde webpagina's, zoals toegang tot de webcam, microfoon, locatieservices. 

  5. Referrer-Policy: Bepaalt welke referrer-informatie meegestuurd moet worden bij navigatie naar een andere website, ter bescherming van privacy en gevoelige gegevens. 

Waarde

Omschrijving

Waarde

Omschrijving

no-referrer

Er wordt geen referrer-informatie verzonden 

no-referrer-whendowngrade

Dit is het standaardgedrag als er geen beleid is ingesteld. De referrer wordt verzonden tenzij de navigatie van HTTPS naar HTTP gaat. 

origin

Alleen het domein van de referrer wordt verzonden, niet het volledige pad.  

origin-when-cross-origin

Verzend de volledige URL als de bestemming op hetzelfde domein is, maar alleen het domein bij cross-origin verzoeken.  

same-origin

Verzend de referrer alleen bij navigatie binnen hetzelfde domein.  

strict-origin

Verzend alleen het domein van de referrer, en doe dit niet als de navigatie van HTTPS naar HTTP gaat.  

strict-origin-when-cross-origin

Combineert het gedrag van origin-when-cross-origin en strict-origin. 

unsafe-url

Verzend de volledige URL, ongeacht de aard van de navigatie.  

  1. Cross-origin Resource Sharing (CORS): Stelt webbrowsers in staat om veilige en gecontroleerde integraties tussen verschillende webdomeinen mogelijk te maken.  
    CORS kan gezien worden als een uitbreiding op het gebruik van Referrer-Policy: same-origin om alsnog op een gecontroleerde manier communicatie met andere domeinen mogelijk te maken. 

Referenties 

  1. Subresource Integrity (SRI): Stelt browsers in staat om te controleren of opgehaalde resources, zoals scripts of stylesheets, niet zijn aangepast. 

Referenties 

  1. Cookie Header: Helpt bij het beveiligen van cookies die worden gebruikt voor het opslaan van gebruikersdata op websites. Belangrijke opties zijn: 

  • Secure: Zorgt ervoor dat cookies alleen over HTTPS verzonden worden. 

  • HttpOnly: Voorkomt toegang tot cookies via JavaScript, wat beschermt tegen cross-site scripting (XSS) aanvallen. 

  • SameSite: Beperkt hoe cookies worden verzonden bij cross-site requests om te beschermen tegen cross-site request forgery (CSRF) aanvallen. Heeft opties Strict, Lax, en None. 

  • Max-Age en Expires: Bepaalt hoe lang een cookie geldig blijft. 

6. Conclusie 

Het implementeren van deze HTTP Security Headers versterkt de beveiliging van lokale besturen tegen diverse webgebaseerde aanvallen. Het is van cruciaal belang om regelmatig de configuratie te controleren en bij te werken om de veiligheid te waarborgen in een steeds veranderend bedreigingslandschap. 

Dit is een document voor publiek gebruik.