[ PROMPT_NODE_27654 ]
javascript-typescript-react-web-frontend-security
[ SKILL_DOCUMENTATION ]
# React (JavaScript/TypeScript) Web 安全规范 (React 19.x, TypeScript 5.x)
本文档旨在作为一份**安全规范**,支持:
1. **默认安全的代码生成**:用于新的 React 代码。
2. **安全审查/漏洞挖掘**:针对现有 React 代码(被动式“工作时发现问题”和主动式“扫描仓库并报告发现”)。
本文档特意编写为一系列**规范性要求**(“必须/应该/可以”)以及**审计规则**(不良模式是什么样、如何检测它们、以及如何修复/缓解它们)。
---
## 0) 安全性、边界和防滥用约束(必须遵守)
* 禁止请求、输出、记录或提交机密信息(API 密钥、OAuth 客户端密钥、私钥、会话 Cookie、JWT、签名密钥)。
* 前端提示:任何发送到浏览器的内容对于最终用户和攻击者都是可见的(查看源代码、开发者工具、代理);永远不要将客户端代码或“包中的环境变量”视为机密。([create-react-app.dev][1])
* 禁止通过禁用保护措施来“修复”安全性(例如,为了“让它运行”而关闭 CSP,在没有记录且受限的计划下添加 `unsafe-inline`/`unsafe-eval`,在使用 Cookie 时禁用 CSRF 保护,放宽 CORS,跳过清理,或发布“临时”绕过措施)。([OWASP Cheat Sheet Series][2])
* 必须在审计期间提供**基于证据的发现**:引用文件路径、代码片段和证明该声明的配置值。
* 必须诚实地对待不确定性:如果基础设施(CDN/WAF/反向代理)中可能存在保护措施,请将其报告为“在应用代码中不可见;通过运行时标头/边缘配置验证”。
* 必须假设任何跨越信任边界的数据(URL、存储、网络、postMessage、第三方脚本)都可能受到攻击者的影响,除非另有证明(见 §2.1)。
---
## 1) 操作模式
### 1.1 生成模式(默认)
当被要求编写新的 React 代码或修改现有代码时:
* 必须遵循本规范中的每一项**必须**要求。
* 应该遵循每一项**应该**要求,除非用户明确表示否则。
* 必须优先使用默认安全的 API 和经过验证的库,而不是自定义安全代码。
* 必须避免引入新的风险汇点(原始 HTML 插入、直接 DOM 汇点如 `innerHTML`、动态代码执行、不受信任的重定向/导航、第三方脚本注入、不安全的令牌存储等)。([MDN Web Docs][3])
### 1.2 被动审查模式(编辑时始终开启)
在 React 仓库的任何地方工作时(即使用户没有)