diff --git a/src/lib/security/headers.ts b/src/lib/security/headers.ts index d593462..701a04f 100644 --- a/src/lib/security/headers.ts +++ b/src/lib/security/headers.ts @@ -2,17 +2,19 @@ * Sicherheits-Header, eingehängt in next.config.ts. * * Content-Security-Policy ist der zentrale Querschnitts-Schutz (Implementierungs- - * plan Z.1314): in Produktion strikt mit default-src 'self', frame-ancestors 'none' - * und form-action 'self'. Im Dev-Modus benötigt Next.js (HMR/React-Refresh) eine - * gelockerte script-src/connect-src-Variante ('unsafe-eval' + ws: für den Dev-Socket). + * plan Z.1314): default-src 'self', frame-ancestors 'none', form-action 'self', + * object-src 'none'. script-src erlaubt 'unsafe-inline' (KEIN 'unsafe-eval' in + * Prod), da Next.js (App Router) Inline-Bootstrap-/Hydration-Skripte ohne Nonce + * ausliefert — eine strikte nonce-basierte CSP ginge nur über die Middleware + * (Hardening-Option). Im Dev zusätzlich 'unsafe-eval' + ws: (HMR/React-Refresh). */ const isProd = process.env.NODE_ENV === "production"; const CSP = [ "default-src 'self'", - // Dev braucht eval (React Refresh) + inline; Prod bleibt strikt. + // Next.js braucht Inline-Skripte (Bootstrap/Hydration, ohne Nonce); Dev zusätzlich eval. isProd - ? "script-src 'self'" + ? "script-src 'self' 'unsafe-inline'" : "script-src 'self' 'unsafe-eval' 'unsafe-inline'", "style-src 'self' 'unsafe-inline'", "img-src 'self' data: blob:",