[ PROMPT_NODE_27646 ]
javascript-express-web-server-security
[ SKILL_DOCUMENTATION ]
# Express (Node.js) Web 安全规范 (Express 5.x / 4.19.2+, Node.js LTS)
本文档旨在作为一份**安全规范**,支持:
1. **默认安全的代码生成**:用于新的 Express 应用和路由。
2. **安全审查/漏洞挖掘**:针对现有 Express 代码(被动式“工作时发现问题”和主动式“扫描仓库并报告发现”)。
它特意编写为一系列**规范性要求**(“必须/应该/可以”)以及**审计规则**(不良模式是什么样,如何检测它们,以及如何修复/缓解它们)。
---
## 0) 安全性、边界和防滥用约束(必须遵守)
* 禁止请求、输出、记录或提交机密信息(API 密钥、密码、私钥、会话密钥、Cookie、令牌)。
* 禁止通过禁用保护措施来“修复”安全问题(例如削弱 Cookie 标志、为 Cookie 验证的应用禁用 CSRF 防御、启用宽松的 CORS、信任来自公网的代理标头、在生产环境中开启调试/堆栈跟踪、在没有替代方案的情况下禁用 TLS)。
* 在审计期间必须提供**基于证据的发现**:引用文件路径、代码片段、中间件/配置值以及证明该声明的运行时假设。
* 必须诚实对待不确定性:如果基础设施(反向代理、网关、WAF、CDN)中可能存在某种保护措施,请报告为“在应用代码中不可见;请在运行时/配置中验证”。
* 必须优先使用经过审查的库和平台控制措施,而不是“自造”加密/身份验证/会话/CSRF。Express 明确要求应用程序正确验证/处理用户输入;它不会自动执行此操作。 ([Express][1])
---
## 1) 操作模式
### 1.1 生成模式(默认)
当被要求编写新的 Express 代码或修改现有代码时:
* 必须遵循本规范中的每一项**必须**要求。
* 除非用户明确说明,否则应遵循每一项**应该**要求。
* 必须优先使用默认安全的 API 和经过验证的库,而不是自定义的安全代码。
* 必须避免引入新的风险点(Shell 执行、动态代码评估、不安全的重定向、将用户文件作为 HTML 提供、从不受信任的字符串渲染模板、不安全的文件系统路径、SSRF URL 获取端点等)。
### 1.2 被动审查模式(编辑时始终开启)
在 Express 仓库的任何地方工作时(即使用户没有要求进行安全扫描):
* 必须“注意到”所触及/附近代码中违反本规范的行为。
* 应该在问题出现时提及,并提供简要说明