Naar hoofdinhoud
EU-webbeveiliging: in 10 stappen naar een betere rating · Deel 3

Content Security Policy: de belangrijkste verdediging die 89% mist

CSP beperkt XSS, injectie en datadiefstal — één regel configuratie die 89% van de EU-websites mist. Hoe u het goed implementeert zonder iets te breken.

· SiteGuardian

Deel 3 van de serie "EU-webbeveiliging: in 10 stappen naar een betere rating"


Waarom CSP belangrijk is

Cross-Site Scripting (XSS) is al meer dan 20 jaar de meest voorkomende kwetsbaarheid in webapplicaties. Een aanvaller injecteert JavaScript in uw website — via een formulier, een URL-parameter, een reactie. De browser van de bezoeker voert de code uit omdat deze geen onderscheid kan maken met legitieme pagina-inhoud.

Content Security Policy (CSP) lost dit op: u definieert expliciet welke bronnen de browser mag accepteren voor scripts, stijlen, afbeeldingen en andere resources. Al het andere wordt geblokkeerd.

Adoptiegraad in de EU: 10,8%. Negen van de tien websites hebben geen CSP-header.


Wat de data laat zien

Uit de SiteGuardian Benchmark over meer dan 700.000 Europese websites:

  • 10,8% heeft een CSP-header
  • Websites met security.txt hebben CSP in 47% van de gevallen — 4,7x vaker
  • Permissions-Policy (gerelateerde header): slechts 6,4%

CSP stap voor stap implementeren

Het grootste obstakel: een te strenge CSP breekt de site. Google Analytics laadt niet meer, ingesloten YouTube-video's verdwijnen, inline stijlen werken niet meer.

Stap 1: Report-Only modus (breekt niets)

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

De browser meldt schendingen maar blokkeert niets. U ziet welke externe bronnen uw site gebruikt zonder iets te breken.

Stap 2: bronnen identificeren

Monitor de rapporten gedurende 1-2 weken. Typische bronnen die u moet toestaan:

  • Google Analytics: https://www.googletagmanager.com https://www.google-analytics.com
  • Google Fonts: https://fonts.googleapis.com https://fonts.gstatic.com
  • YouTube-embeds: https://www.youtube.com https://www.youtube-nocookie.com
  • Uw CDN: https://cdn.uw-domein.com

Stap 3: het beleid opbouwen

Content-Security-Policy: default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data: https:; frame-src https://www.youtube-nocookie.com

Stap 4: activeren

Verwijder -Report-Only uit de headernaam. Test de site grondig.


Belangrijke richtlijnen

Richtlijn Bepaalt Aanbeveling
default-src Fallback voor alles 'self'
script-src JavaScript 'self' + expliciete domeinen
style-src CSS 'self' 'unsafe-inline' (vaak nodig)
img-src Afbeeldingen 'self' data: https:
font-src Lettertypen 'self' + Google Fonts indien nodig
connect-src XHR/Fetch 'self' + API-domeinen
frame-src iframes Alleen expliciete domeinen
object-src Flash/Java 'none' (altijd)
base-uri base-tag 'self'

Nginx

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'" always;

Apache

Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; object-src 'none'; base-uri 'self'"

Veelgemaakte fouten

1. unsafe-inline voor scripts. script-src 'unsafe-inline' staat elk inline script toe — waardoor de hele CSP nutteloos wordt tegen XSS. Gebruik nonces of hashes in plaats daarvan.

2. * als bron. default-src * staat alles toe van overal. Dat is geen beleid, dat is een placebo.

3. Te streng beginnen. Begin altijd met Report-Only. Een CSP die de site breekt en onmiddellijk wordt uitgeschakeld, beschermt niemand.


Regelgevende context

  • NIS2 Art. 21(2)(d) — beveiliging bij de ontwikkeling en het onderhoud van informatiesystemen
  • AVG Art. 32 — XSS kan leiden tot datalekken (sessiekaping, cookiediefstal)
  • PCI DSS 4.0 — Vereiste 6.4.3 schrijft expliciet CSP voor op betaalpagina's

Controleer uw CSP

SiteGuardian detecteert niet alleen of een CSP-header bestaat, maar analyseert de richtlijnen op bekende zwaktes:

https://siteguardian.io/scan


Volgende week in Deel 4: DNSSEC — waarom 84% van de EU-domeinen geen bescherming heeft tegen DNS-spoofing.

Hoe scoort jouw website in vergelijking?

SiteGuardian scant je domein op zes beveiligingsdimensies — gratis, direct, zonder registratie.

Scan je website

EU-webbeveiliging: in 10 stappen naar een betere rating

Dit artikel maakt deel uit van een wekelijkse serie over best practices voor EU-webbeveiliging.

SiteGuardian

2026-04-27

RSS