import type { NextConfig } from "next"; const nextConfig: NextConfig = { output: "standalone", async headers() { // CSP de endurecimiento compatible con páginas estáticas. // Sin nonces a propósito: los nonces exigen render dinámico en // todas las páginas (rompería el caché del índice) y style-src // estricto bloquearía los `style` inline de la UI. `connect-src`, // `form-action` e `img-src` acotan el impacto de un XSS // (sin exfiltración a orígenes externos). const csp = [ "default-src 'self'", "script-src 'self' 'unsafe-inline'", "style-src 'self' 'unsafe-inline'", "img-src 'self' data: blob:", "font-src 'self' data:", "connect-src 'self'", "object-src 'none'", "base-uri 'self'", "form-action 'self'", "frame-ancestors 'none'", "upgrade-insecure-requests", ].join("; "); return [ { source: "/:path*", headers: [ { key: "X-Content-Type-Options", value: "nosniff" }, { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" }, { key: "X-Frame-Options", value: "DENY" }, { key: "Content-Security-Policy", value: csp }, ], }, ]; }, }; export default nextConfig;