剣 KENSAI
Case Study

Van Cijfer B naar Cijfer A:
NIS2-compliance in 30 minuten hersteld

We hebben onze eigen websites gescand met KENSAI en kritieke NIS2-nalevingsgaten gevonden. Ontbrekende HTTP-beveiligingsheaders brachten twee van onze drie domeinen naar Cijfer B (0,786). Dit is precies wat er ontbrak, welke NIS2-artikelen in gevaar waren en hoe 30 minuten Caddy-configuratie alles oploste.

📅 16 maart 2026⏱ 6 min lezen

De ongemakkelijke waarheid

We bouwen een beveiligingsscanplatform. We prediken NIS2-compliance aan onze klanten. En daarna runden we KENSAI op onze eigen domeinen en ontdekten dat twee van de drie niet conform waren. Geen kwetsbaarheden, geen inbreuken. Alleen ontbrekende HTTP-beveiligingsheaders.


De scanresultaten

We voerden de geautomatiseerde NIS2-nalevingsscan van KENSAI uit op alle drie portfoliodomeinen op 15 maart 2026:

kensai.app
A
0.997 / 1.000
NIS2-Score
brnz.ai
B
0.786 / 1.000
NIS2-Score
codeforceai.com
B
0.786 / 1.000
NIS2-Score

Wat ontbrak — en waarom het belangrijk is voor NIS2

Ontbrekende headerDoelNIS2-referentieStatus
Strict-Transport-SecurityHTTPS enforcement, protocol downgrade preventionArt. 21(2)(h)✗ ONTBREEKT
Content-Security-PolicyXSS & injection blockingArt. 21(2)(d)✗ ONTBREEKT
X-Frame-OptionsClickjacking preventionArt. 21(2)(b)✗ ONTBREEKT
X-Content-Type-OptionsMIME-sniffing preventionArt. 21(2)(b)✗ ONTBREEKT
Referrer-PolicyReferrer data leak controlArt. 21(2)(e)✗ ONTBREEKT
Permissions-PolicyBrowser API access restrictionArt. 25✗ ONTBREEKT
NIS2-implicatie: Art. 21(2) vereist passende en evenredige technische en organisatorische maatregelen. Ontbrekende headers worden door nationale autoriteiten beschouwd als bewijs van ontoereikende basisbeveiliging.

De oplossing: Caddy-headerconfiguratie

# security_headers snippet
(security_headers) {
  header {
    Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://fonts.googleapis.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; connect-src 'self' https:; frame-ancestors 'none'"
    X-Frame-Options "DENY"
    X-Content-Type-Options "nosniff"
    Referrer-Policy "strict-origin-when-cross-origin"
    Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=(), interest-cohort=()"
    -Server
    -X-Powered-By
  }
}

brnz.ai, www.brnz.ai {
  import security_headers
  reverse_proxy localhost:3001
}

codeforceai.com, www.codeforceai.com {
  import security_headers
  reverse_proxy localhost:3002
}

Voor vs. Na

⚠ Voor
B
0.786 / 1.000
  • HSTS ontbreekt
  • CSP ontbreekt
  • X-Frame-Options ontbreekt
  • X-Content-Type-Options ontbreekt
  • Referrer-Policy ontbreekt
  • Permissions-Policy ontbreekt
✓ Na
A
0.997 / 1.000
  • HSTS met preload
  • CSP blokkeert injecties
  • X-Frame-Options: DENY
  • X-Content-Type-Options: nosniff
  • Referrer-Policy: strict-origin
  • Permissions-Policy: vergrendeld
Resultaat: Beide domeinen gingen van Cijfer B (0,786) naar Cijfer A (0,997) in minder dan 30 minuten.

Controleer uw NIS2-compliance — Gratis

Voer dezelfde scan uit die we op onze eigen domeinen hebben uitgevoerd. Ontvang uw NIS2-nalevingscijfer en een direct uitvoerbaar herstelrapport.

Start gratis NIS2-scan →

🛡️ Is uw website veilig?

Ontdek kwetsbaarheden voordat aanvallers dat doen.

Scan uw website gratis →