CSP policy added in next.config.mjs headers(). Default: Content-Security-Policy-Report-Only; CSP_ENFORCE=true switches to enforcing header. Shipped as Phase D step 2.
Status: done (2026-05-24, code) · Source: [[Projects/personal-finance-notion/context/audit-2026-05-17-auth|Auth audit 2026-05-17 §H1]]
buildContentSecurityPolicy() — default-src, script/style, img (incl. Google avatars), connect-src (OpenRouter, Resend), frame-ancestors, form-actionunsafe-eval, ws: / wss: for Turbopack HMR.env.example documents CSP_ENFORCECSP_ENFORCE=truenext.config.mjs, .env.example