Terug naar blog
Technisch1 februari 20265 min

content-security-policy: CSP Headers Uitgelegd 2026: Comp...

Leer alles over Content-Security-Policy (CSP) headers in 2026. Bescherm je Next.js app tegen XSS aanvallen met onze stap-voor-stap guide.

SG

ShadowGuard Team

Security Engineers

Bijgewerkt: 18 feb 2026

Wat betekent 'unsafe-eval'?

'unsafe-eval' staat toe dat JavaScript-functies als eval(), new Function() en setTimeout('string') worden gebruikt. Deze functies voeren een tekst-string uit als code, wat een groot beveiligingsrisico is.

Waarom is het gevaarlijk? Als een aanvaller controle heeft over een string die aan eval() wordt meegegeven, kan die willekeurige code uitvoeren in de browser van je bezoekers.

Veel voorkomend probleem: Sommige JavaScript-libraries en frameworks vereisen 'unsafe-eval'. Check altijd of er een recentere versie is die dit niet meer nodig heeft, of zoek een alternatieve library.

CSP instellen in Next.js

Als je met Next.js werkt (wat veel Lovable, V0 en Cursor-projecten gebruiken), kun je CSP instellen via next.config.js of middleware:

Methode 1: Via next.config.js (statisch)

JavaScript
/** @type {import('next').NextConfig} */
const nextConfig = {
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: [
          {
            key: 'Content-Security-Policy',
            value: [
              "default-src 'self'",
              "script-src 'self'",
              "style-src 'self' 'unsafe-inline'",
              "img-src 'self' data: https:",
              "font-src 'self' https://fonts.gstatic.com",
              "connect-src 'self' https://api.example.com",
              "frame-ancestors 'none'",
            ].join('; '),
          },
        ],
      },
    ];
  },
};

module.exports = nextConfig;

Methode 2: Via middleware (dynamisch, met nonce)

TypeScript
TypeScript
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
  const nonce = Buffer.from(crypto.randomUUID()).toString('base64');
  const cspHeader = [
    "default-src 'self'",
    `script-src 'self' 'nonce-${nonce}'`,
    "style-src 'self' 'unsafe-inline'",
    "img-src 'self' data: https:",
    "font-src 'self'",
    "connect-src 'self'",
    "frame-ancestors 'none'",
  ].join('; ');

  const response = NextResponse.next();
  response.headers.set('Content-Security-Policy', cspHeader);
  response.headers.set('x-nonce', nonce);
  return response;
}

CSP instellen via Vercel of Netlify

Als je je site host op Vercel of Netlify, kun je headers ook via configuratiebestanden instellen:

JSON
// vercel.json
{
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "Content-Security-Policy",
          "value": "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self';"
        }
      ]
    }
  ]
}

// netlify.toml
[[headers]]
  for = "/*"
  [headers.values]
    Content-Security-Policy = "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self';"

Veelgemaakte fouten bij CSP

Waarom CSP essentieel is tegen XSS

Cross-Site Scripting is al jaren de meest voorkomende webkwetsbaarheid ter wereld (OWASP Top 10). Bij een succesvolle XSS-aanval kan een aanvaller:

Een correcte CSP-header blokkeert het overgrote deel van XSS-aanvallen automatisch. Het is de belangrijkste beveiligingsmaatregel die je kunt nemen.

Controleer jouw CSP met Shadow Guard

Wil je weten of jouw site een goede CSP-header heeft? Draai een gratis scan en we analyseren je complete header-configuratie. Je krijgt een duidelijk overzicht van wat er ontbreekt, plus een kant-en-klare configuratie die je direct kunt toepassen.

Met continue monitoring controleren we bij elke deployment of je CSP-header nog intact is. Zo weet je zeker dat een update of nieuwe feature je beveiliging niet onbedoeld verzwakt.

Veelgestelde Vragen (FAQ)

Hoe vaak moet ik security scans draaien?

Minimaal maandelijks, of na elke major update. Voor productie: continue monitoring.

Is AI-gegenereerde code veiliger?

Nee, AI code bevat vaak onzichtbare kwetsbaarheden. Altijd scannen voor deployment.

Meer artikelen

Klaar om je site te beveiligen?

Start een gratis scan en ontvang direct AI-klare fix instructies.