用途:为 Next.js App Router 应用加固安全,优先级标注为 P0(关键)。
主要能力与用法:
- 认证中间件:用 middleware.ts 在边缘侧验证 JWT/session,保护受保护路由,并可做基于角色的访问控制(RBAC)。
- Server Actions 校验:所有来自 FormData 或 JSON 的输入都必须用 Zod schema 清洗校验,并在每个 action 内先调用 await auth() 验证调用方。
- 安全响应头:在 middleware 响应中设置 CSP、HSTS、X-Frame-Options、X-XSS-Protection 等。
- server-only:在含密钥的模块引入,防止后端逻辑被打包进客户端。
- 数据污点:用实验性 API taintObjectReference,阻止服务端敏感对象(如带 passwordHash 的 User)泄漏到客户端组件。
- Route Handlers(route.ts):实现限流以防暴力破解或 DoS,校验 Origin/Referer 头以缓解 CSRF。
- 认证令牌:严格使用 HttpOnly、Secure、SameSite: 'Lax' 的 cookie,不要存入 localStorage。
- 组件纯净:转义所有用户提供内容;未经 DOMPurify 等清洗不得使用 dangerouslySetInnerHTML。
反模式:不向客户端泄漏数据库字段(用 DTO,不传原始模型对象);不在客户端 bundle 暴露 process.env(仅确认安全才用 NEXT_PUBLIC_ 前缀);不跳过 Server Action 输入校验;不在共享 Layout 做鉴权,应改用中间件。
适用场景:Next.js App Router 项目的认证、服务端操作、安全头与敏感数据隔离场景。限制:资料未提供具体版本要求、安装命令、代码示例细节与兼容性说明。