Next.js 15 安全响应头与 CSP/Trusted Types 集成实践概述统一设置 CSP/Trusted Types 与基础安全头,通过 Middleware 与 Metadata 协同输出,保障边缘与服务器端一致的安全策略。Middleware 统一安全头import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' export function middleware(req: NextRequest) { const res = NextResponse.next() res.headers.set('X-Frame-Options', 'SAMEORIGIN') res.headers.set('X-Content-Type-Options', 'nosniff') res.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin') res.headers.set('Cross-Origin-Opener-Policy', 'same-origin') res.headers.set('Cross-Origin-Embedder-Policy', 'require-corp') return res } export const config = { matcher: ['/((?!_next|static|api).*)'] } Metadata 输出 CSP 与 Trusted Typesimport type { Metadata } from 'next' export function generateMetadata(): Metadata { return { robots: { index: true, follow: true }, viewport: 'width=device-width, initial-scale=1', other: { 'Content-Security-Policy': "default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-__NONCE__'; object-src 'none'; base-uri 'self'; require-trusted-types-for 'script'; trusted-types app-policy;", 'Report-To': '{"group":"csp-endpoint","max_age":10800,"endpoints":[{"url":"https://report.example.com/csp"}]}' } } } Trusted Types 初始化<script nonce="__NONCE__"> window.trustedTypes?.createPolicy('app-policy', { createScriptURL: (url) => url.startsWith(location.origin) ? url : '' }) </script> 技术参数与验证浏览器:Chrome 120+;报告端点接收正常;COOP/COEP/CORP 生效;脚本注入风险降低。注意事项CSP 策略需与第三方资源白名单协同;逐步启用 Trusted Types 并提供回退;收集报告用于优化策略。---发布信息:已发布 · 技术验证 · 阅读 36 分钟 · CC BY-SA 4.0

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部