fix(csp): Inline-Skripte in Prod erlauben (Next.js-Hydration)
Prod-CSP hatte script-src 'self' ohne nonce/hash -> Next.js' Inline-Bootstrap-/ Hydration-Skripte wurden vom Browser blockiert (Login-Seite ohne JS, 'Connection closed'). script-src um 'unsafe-inline' ergänzt (KEIN 'unsafe-eval' in Prod); übrige CSP (default-src 'self', object-src none, frame-ancestors none, base-uri self, form-action self) bleibt strikt. Stärkere nonce-basierte CSP via Middleware als Hardening-Option offen. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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:",
|
||||
|
||||
Reference in New Issue
Block a user