fec-security-review · diff
git:20260611.9d7f5e4 to git:20260926.e2c689f
16 added, 0 removed. Audit A to A.
---
name: fec-security-review
description: 用于审查前端安全风险,如 XSS、CSRF、敏感数据暴露、不安全 DOM API、不可信用户输入、认证/token 处理、支付流程、文件上传、CSP、依赖风险或第三方脚本;中文触发词包括 安全审查、安全检查。
---
# 前端安全审查
+ ## 评审模式与覆盖范围
+
+ 用户明确指定的范围优先于默认行为。采用以下三种审核模式:
+
+ - **改动审核**:仅在明确要求或当前任务已明确最近改动、本次修改、暂存区、PR 或提交上下文时,审核这些改动及必要上下文。本地模式在请求范围内检查暂存、未暂存差异及相关未跟踪项目文件;仅要求暂存区时只审核暂存改动。无改动时说明没有可审核的改动,不自动切换到最近提交或扩大范围。
+ - **指定范围审核**:用户指定文件或目录时,建立范围内文件清单,审核其中现有代码,包括未改动代码;不要求 Git 差异。
+ - **全项目审核(默认)**:未指定范围或改动上下文,或明确要求审核整个项目时,建立项目自有前端代码、相关测试、配置和依赖声明的清单,再按模块分批审核,包括未改动代码;不要求 Git 差异。
+
+ 先选择范围,再收集差异。仅指定文件或目录表示全量审核该范围;路径与明确改动请求同时出现时,仅增量审核该路径的改动。未限定的调用即使存在 Git 改动也默认全项目审核。开始审核时说明选定模式和目标范围。修改后自动委托审核时,显式传入本次改动范围,避免无范围调用触发全项目审核。
+
+ 默认排除依赖目录、构建产物、缓存、生成文件和第三方代码,并记录排除项。保持前端职责边界,不宣称完成后端专项审核。目标不存在或范围内无相关文件时,明确说明,不替换为其他范围。
+
+ 跨批次合并同根因发现。报告记录**审核模式、目标范围、已审核文件或模块、排除项、未覆盖文件或模块、完成状态及验证命令和结果**。受上下文或执行预算限制时,标记部分完成并列出剩余模块,不宣称已完成全项目覆盖。为理解上下文而读取调用方或执行全项目 lint/类型检查,不计为完成这些文件的人工审核。
+
+ 改动审核保留合并建议;指定范围和全项目审核使用风险评估(低 / 中 / 高,并标明阻塞问题),不宣称合并就绪。保留严重程度、证据要求和报告文件命名。除非用户明确要求修复,否则仅输出报告。
+
## 用途
识别前端代码中的客户端安全风险,并给出可执行修复建议。
## 流程
1. 先确认审查面:用户输入、动态 HTML、URL 跳转、认证态、RBAC、文件上传、支付/删除等敏感操作、第三方脚本和依赖。
2. 搜索高危模式:`dangerouslySetInnerHTML`、`v-html`、`innerHTML`、`document.write`、动态 script、未校验 redirect、明文 token。
3. 按风险类型审查:XSS、CSP、敏感数据、CSRF、依赖、输入校验、文件上传、开放重定向、认证授权和第三方脚本。
4. 用边界模型判断责任:客户端只能改善体验和减少误用,鉴权、授权、上传信任和敏感操作必须由服务端最终裁决。
5. 高危问题标记为阻塞合并;前端校验只能改善体验,不能作为唯一安全边界。
6. 输出分级安全报告;报告格式见 [references/report-template.md](references/report-template.md)。
## 详细参考
- 需要 XSS、CSP、敏感数据、CSRF、依赖和输入校验细节时,加载 [references/security-checklist.md](references/security-checklist.md)。
- 撰写安全审查报告时,加载 [references/report-template.md](references/report-template.md)。
## 约束
- 不要为了方便开发而绕过安全机制。
- 不要依赖前端校验作为唯一安全防线。
- 不要信任任何来自客户端的数据。
- 发现高危问题时必须标记为阻塞合并。
- 与通用代码质量 review 分工:本 skill 关注威胁、攻击面和数据泄露。
- 不把依赖审计结果机械等同为可利用漏洞;需要结合运行路径、暴露面和修复成本判断。
- 不把隐藏按钮、前端路由守卫或本地角色字段当作授权边界;API、SSR loader、server action 和敏感操作必须有服务端裁决。
## 预期输出
输出 CRITICAL/HIGH/MEDIUM/LOW 分级安全审查报告,每个问题关联具体文件和行号,给出修复建议;报告保存为 `reports/security-review-YYYY-MM-DD-HHmmss.md`。