| name | prevent-js-security-bugs |
| description | 当用户需要编写、重构或修改 JavaScript/TypeScript 代码时,必须激活本技能。激活后,先执行威胁分析,再查阅对应安全规范文档,最后生成符合安全编码标准的代码,确保不引入已知安全漏洞。 |
安全代码生成规范
技能概述
本技能的目标是:在代码生成阶段消除安全漏洞,而非依赖事后审查。
当用户需要编写、重构或修改 JavaScript/TypeScript 代码时,必须先完成威胁识别和规范查阅,再生成代码。禁止跳过安全分析步骤。
触发条件
满足以下任意一条时,必须激活本技能:
- 编写、重构或修改 JavaScript/TypeScript 代码。
工作流程
必须严格按顺序执行以下三步,不得跳过任何步骤。
第一步:识别安全风险
逐条分析用户需求,对照下表判断哪些风险类型适用于当前场景。每一个适用的风险类型都必须处理,不得遗漏。
| 风险类型 | 典型场景 | 对应参考文档 |
|---|
| Query Language 注入 | 拼接 SQL/HQL/NoSQL 查询语句;使用用户输入构造查询条件 | references/prevent-ql-injection.md |
| OS 命令注入 | 调用 child_process.exec、execSync、spawn 等执行系统命令时,命令字符串或参数包含用户输入 | references/prevent-os-command-execution.md |
| 代码注入 | 使用 eval、new Function、setTimeout(string) 执行非字面量字符串;使用非字面量路径动态 require();可能导致 RCE 或任意文件读取 | references/prevent-code-injection.md |
| 原型链污染 | 对对象进行递归合并、深拷贝、属性赋值时,键名来自用户输入(如 __proto__、constructor、prototype) | references/prevent-prototype-pollution.md |
| XSS(跨站脚本) | 将用户输入直接插入 DOM(innerHTML、、);在服务端渲染时未转义输出到 HTML 模板 |