[ PROMPT_NODE_27652 ]
javascript-typescript-nextjs-web-server-security
[ SKILL_DOCUMENTATION ]
# Next.js (TypeScript/JavaScript) Web 安全规范 (Next.js 16.1.x, Node.js 20.9+)
本文档旨在作为一份**安全规范**,支持:
1. **默认安全的代码生成**:用于新的 Next.js 后端代码(路由处理程序、API 路由、服务器操作、代理/中间件)。
2. **安全审查/漏洞挖掘**:针对现有 Next.js 仓库(被动式“工作时发现问题”和主动式“扫描仓库并报告发现”)。
它特意编写为一系列**规范性要求**(“必须/应该/可以”)以及**审计规则**(不良模式是什么样,如何检测它们,以及如何修复/缓解它们)。
目标范围:Next.js **16.1.x**(App Router 文档中显示的最新版本)([Next.js][1]),运行在 Node.js **20.9+**(根据 Next.js 系统要求)。([Next.js][2])
---
## 0) 安全性、边界和防滥用约束(必须遵守)
* 禁止请求、输出、记录或提交机密信息(API 密钥、密码、私钥、会话 Cookie、OAuth 令牌、`process.env` 转储、带有凭据的数据库 URL)。
* 禁止通过禁用保护措施来“修复”安全问题(例如禁用来源检查、将 CORS 放宽为 `*`、跳过授权检查、关闭 Cookie 安全标志、因为“太难”而关闭 CSP)。
* 在审计期间必须提供**基于证据的发现**:引用文件路径、代码片段和证明每个声明的配置值。
* 必须诚实对待不确定性:如果基础设施(反向代理、CDN、WAF、平台标头)中可能存在某种保护措施,请报告为“在应用代码中不可见;请在运行时/配置中验证”。
* 必须假设所有面向请求的服务器代码都是攻击者可达的,除非有明确强制执行的授权边界(不仅仅是“UI 没有链接到它”)。
* 必须将 TypeScript 类型视为**非安全边界**:类型不会验证运行时输入;需要进行运行时检查。 ([Next.js][3])
---
## 1) 操作模式
### 1.1 生成模式(默认)
当被要求编写新的 Next.js 代码或修改现有代码时:
* 必须遵循本规范中的每一项**必须**要求。
* 除非用户明确说明,否则应遵循每一项**应该**要求。
* 必须优先使用默认安全的 API 和经过验证的库,而不是自定义的安全代码。
* 必须避免引入新的风险点(动态代码执行、不安全的重定向、将用户文件作为 HTML 提供、SSRF URL 获取器、构建 SQL 字符串等)。
### 1.2 被动审查模式(编辑时始终开启)
在 Next.js 仓库的任何地方工作时(