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.
|
* Sicherheits-Header, eingehängt in next.config.ts.
|
||||||
*
|
*
|
||||||
* Content-Security-Policy ist der zentrale Querschnitts-Schutz (Implementierungs-
|
* Content-Security-Policy ist der zentrale Querschnitts-Schutz (Implementierungs-
|
||||||
* plan Z.1314): in Produktion strikt mit default-src 'self', frame-ancestors 'none'
|
* plan Z.1314): default-src 'self', frame-ancestors 'none', form-action 'self',
|
||||||
* und form-action 'self'. Im Dev-Modus benötigt Next.js (HMR/React-Refresh) eine
|
* object-src 'none'. script-src erlaubt 'unsafe-inline' (KEIN 'unsafe-eval' in
|
||||||
* gelockerte script-src/connect-src-Variante ('unsafe-eval' + ws: für den Dev-Socket).
|
* 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 isProd = process.env.NODE_ENV === "production";
|
||||||
|
|
||||||
const CSP = [
|
const CSP = [
|
||||||
"default-src 'self'",
|
"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
|
isProd
|
||||||
? "script-src 'self'"
|
? "script-src 'self' 'unsafe-inline'"
|
||||||
: "script-src 'self' 'unsafe-eval' 'unsafe-inline'",
|
: "script-src 'self' 'unsafe-eval' 'unsafe-inline'",
|
||||||
"style-src 'self' 'unsafe-inline'",
|
"style-src 'self' 'unsafe-inline'",
|
||||||
"img-src 'self' data: blob:",
|
"img-src 'self' data: blob:",
|
||||||
|
|||||||
Reference in New Issue
Block a user