使用cursor打造自己的web应用扫描器

48 阅读7分钟

使用 Cursor 打造自己的安全扫描器

# 通过Cursor分析js安全初体验 中,我们介绍了可以通过cursor来分析js代码的安全性。比如,检查硬编码密钥、敏感信息泄露、XSS漏洞等常见问题。如果每次都要重复输入相同的提示词,不仅效率低下,还容易遗漏关键检查点。

本文将介绍如何使用 Cursor 的自定义规则功能,打造专属的安全扫描器,让AI助手按照预设的安全审计标准自动执行扫描任务。

核心思路

通过 Cursor 的**用户规则(Rules)**功能,我们可以:

  1. 定义标准化的扫描规范文件
  2. 设置触发词来激活扫描模式
  3. 让 AI 按照既定标准自动执行静态安全分析

这样,每次只需要输入简单的触发词(如 @SCAN:WEB),AI 就会按照预设的扫描维度进行全面的安全检查。

3.1 编写自己的提示词文件

首先,我们需要创建一个扫描规范文件,定义扫描的维度、风险类型和关注重点。

创建一个提示词文件,比如 webscan.md,内容如下:

# Web 前端静态安全盲扫(通用)

你是前端安全审计与漏洞挖掘专家。请对我提供/选中的 Web 前端代码(JS/TS/HTML/CSS/模板)进行"静态盲扫",产出可验证的风险线索。

## 输出结构(强制)

1. **风险总览 Top 10**(高/中/低排序)
2. **详细发现列表**(按风险类型分组)
3. **URL/路径清单**(可疑优先,最多 50 条)
4. **复现/验证建议**(每条风险给 2-3 个可操作步骤)

## 必扫维度

### A. 敏感信息与密钥泄露
- AK/SK/token/secret/password/privateKey/cert
- 身份证/银行卡/手机号/邮箱/姓名/地址等 PII
- 区分真实/测试/占位符,但均列出并标注可能误报

### B. URL / 路径 / 隐藏接口探测
- 提取静态与拼接 URL/host/path
- 标注:测试环境、内网、管理后台、debug/admin/metrics 等
- 标注敏感接口关键词:login/auth/sso/token/pay/bindcard/sms/admin/upload/download

### C. DOM XSS 与注入链路
- **sink**:innerHTML/outerHTML/document.write/insertAdjacentHTML
- **动态执行**:eval/new Function/setTimeout(string)/setInterval(string)
- **source**:location/search/hash、URLSearchParams、postMessage、接口返回、本地存储
- 能串则给 source→sink 数据流;不能串则分别列可疑点

### D. 跳转/重定向与外联控制
- location.href/window.open/router.push 等
- 判断目标是否可被参数/接口返回/本地存储控制
- 是否存在域名/scheme 白名单

### E. 会话与令牌处理
- token 存储:localStorage/sessionStorage/indexedDB/cookie
- token 是否出现在 URL/query/hash
- 是否存在从 URL 读 token 并写入存储的逻辑
- logout 是否清理会话

### F. 第三方依赖与供应链风险
- 动态加载脚本、CDN 域名、未锁版本
- 可被替换/劫持的外联入口

### G. 调试/测试残留
- debug/mock/test 开关
- console 输出敏感信息
- 预发/测试域名残留

## 证据要求(强制)

每条发现必须包含:
- 文件路径/函数名/关键字定位
- 风险解释
- 潜在影响
- 下一步验证步骤

不确定的结论用"疑似"标注,不得编造不存在的代码。

本地保存路径:假设保存目录为 /scantools/webscan.md

提示:你可以根据实际需求编辑这个文件,或者让 AI 帮忙优化提示词内容。这里只演示web扫描的提示词,其他类似web应用类型,比如H5,快应用,小程序是类似的思路。

3.2 在 Cursor 中添加用户规则

接下来,我们需要在 Cursor 中配置用户规则,让 AI 能够识别触发词并执行相应的扫描任务。

操作步骤

  1. 点击 Cursor 工具界面左上角的设置图标

image.png

  1. 选择 Rules用户规则 选项

image.png 3. 在规则编辑器中添加以下内容:

【前端安全扫描触发词映射|终版】

说明:以下触发词是"扫描模式开关",不是命令、不是工具名。

━━━━━━━━━━━━━━━━━━━━━━
一、触发方式(支持附加说明)
━━━━━━━━━━━━━━━━━━━━━━

当我输入以下触发词(大小写不敏感)时:
- @SCAN:WEB

你必须立即进入"前端静态安全扫描模式"。

我可能在触发词后追加说明,例如:
- @SCAN:WEB 扫描当前目录

这些说明是【扫描重点提示】,你必须结合执行,但不得因此跳出既定扫描范围。

━━━━━━━━━━━━━━━━━━━━━━
二、扫描模板来源(强制)
━━━━━━━━━━━━━━━━━━━━━━

你必须优先、完整遵循我本地的扫描规范文件:

本地目录:
/Users/80250486/jcy/unk/前端自动扫描工具集

文件映射关系如下:
- @SCAN:WEB → webscan.md

这些文件定义的是【扫描维度、风险类型、关注重点】,你必须按其执行,而不是自行简化。

━━━━━━━━━━━━━━━━━━━━━━
三、扫描模式下的强制行为
━━━━━━━━━━━━━━━━━━━━━━

触发词出现后,你必须执行"纯静态安全分析",包括但不限于:
- 阅读 JS / HTML / 配置文件
- 归纳风险点
- 标注可疑实现
- 给出验证建议

━━━━━━━━━━━━━━━━━━━━━━
四、禁止行为(强制)
━━━━━━━━━━━━━━━━━━━━━━

在扫描模式下,你【严禁】:
- 将触发词当作命令执行
- 尝试 which / npm search / pip / brew / apt / pnpm 等查找或安装工具
- 假设系统中存在 webscan / h5scan / rpkscan 等 CLI
- 为了"完成扫描"而主动运行终端命令(除非我明确要求)

触发词 ≠ 工具名 ≠ 命令。

━━━━━━━━━━━━━━━━━━━━━━
五、各扫描模式的核心关注点(用于校验你是否跑偏)
━━━━━━━━━━━━━━━━━━━━━━

【@SCAN:WEB】
- 敏感信息硬编码(token / PII / key)
- URL / API 路径探测(隐藏接口)
- DOM XSS / 注入链路
- 外联、重定向、第三方依赖
- 本地存储 / Cookie / Token 使用
━━━━━━━━━━━━━━━━━━━━━━
六、输出格式(强制)
━━━━━━━━━━━━━━━━━━━━━━

扫描结果必须包含:
1)Top 风险清单(高 / 中 / 低)
2)每条风险给出:
   - 文件 / 函数 / 关键字定位
   - 风险描述
   - 可能影响
   - 下一步验证建议
3)无法确认的标注为【疑似】,不得编造结论
  1. 点击保存

注意:请将规则中的本地目录路径替换为你实际的扫描规范文件存储路径。

规则说明

  • 触发词@SCAN:WEB,支持大小写不敏感
  • 扫描模式:触发词出现后,AI 进入"前端静态安全扫描模式"
  • 文件映射:每种扫描模式对应一个扫描规范文件
  • 禁止行为:明确禁止将触发词当作命令执行或安装工具

3.3 让规则生效

配置完成后,就可以使用这个规则了。在 Cursor 的聊天窗口中输入触发词,AI 就会自动按照预设的扫描规范执行安全检查。

使用示例

直接在输入框中输入:

@SCAN:WEB 扫描当前目录

或者:

@SCAN:WEB 帮我找隐藏接口

AI 会自动:

  1. 识别触发词 @SCAN:WEB
  2. 读取对应的扫描规范文件(webscan.md
  3. 按照规范执行静态安全分析
  4. 生成结构化的扫描报告

输出示例

扫描完成后,你会得到类似以下格式的报告:

## 风险总览 Top 10

### 高危
1. [硬编码密钥] 在 `src/utils/config.js:23` 发现硬编码的 API Key
2. [XSS漏洞] `src/components/UserProfile.vue:45` 存在 DOM XSS 风险

### 中危
3. [敏感信息] `src/api/auth.js:12` token 存储在 localStorage
...

## 详细发现

### A. 敏感信息与密钥泄露
- **文件**: `src/utils/config.js:23`
- **风险**: 硬编码 API Key
- **影响**: 可能导致 API 滥用
- **验证建议**: 
  1. 检查该 key 是否已泄露
  2. 迁移到环境变量或密钥管理服务
  3. 轮换现有密钥
...

总结

通过这种方式,我们可以:

标准化流程:统一的扫描维度和输出格式
提高效率:无需重复输入长篇提示词
减少遗漏:按照既定规范全面检查
灵活扩展:支持多种扫描模式(WEB/H5/RPK)

这种方式特别适合安全团队进行日常代码审计,可以快速对新项目进行初步安全评估,发现常见的安全问题。

扩展建议

  1. 自定义扫描维度:根据团队需求调整扫描规范文件
  2. 添加更多扫描模式:如 @SCAN:API@SCAN:MOBILE
  3. 集成到CI/CD:可以作为代码审查的辅助工具
  4. 持续优化:根据实际使用情况不断优化扫描规则

希望这篇文章能帮助你更高效地进行安全审计工作!