ctrl+shift+f是代码审计起点,需结合全字匹配、正则筛选、文件范围限定及上下文判断:搜高危函数用\b(?:eval|function|settimeout|setinterval)\b;密钥搜索要排除测试文件并用私钥正则;第三方库需捕获import/require语句并核验路径与package.json一致性。

Ctrl+Shift+F 是代码审计的起点,不是万能解法
直接按 Ctrl+Shift+F(macOS 用 Cmd+Shift+F)打开全局搜索,是定位可疑模式的第一步。但它本身不理解语义——搜到 eval 不代表存在远程代码执行,搜到 localStorage 也不等于有敏感信息泄露。关键在后续筛选和上下文判断。
搜 eval、Function、setInterval 等高危函数时必须加全字匹配和正则
裸搜 eval 会命中 evaluate、event、validation 等大量误报。正确做法是:
- 勾选搜索框右侧的
\按钮(全字匹配),等价于正则\beval\b - 更严格时手动启用
.*(正则模式),输入\b(?:eval|Function|setTimeout|setInterval)\b,一次扫多个关键词 - 限定文件范围:在 “包含的文件” 栏填
**/*.js,**/*.ts,**/*.jsx,**/*.tsx,排除 HTML/JSON 配置文件干扰 - 注意:Node.js 环境中
vm.runInContext同样危险,但名字不常见,需单独补搜
搜硬编码密钥或敏感字符串要避开注释和测试数据
搜 "AKIA" 或 "-----BEGIN RSA PRIVATE KEY-----" 很容易被测试文件、示例代码、甚至注释里的假密钥淹没。实际操作中:
- 先禁用大小写匹配(关掉
Aa),因为密钥常混用大小写 - 在 “排除的文件” 栏填
**/test/**,**/tests/**,**/__mocks__/**,package-lock.json,yarn.lock - 对私钥类内容,启用正则并输入
-----BEGIN\s+(?:RSA|EC|DSA)\s+PRIVATE\s+KEY-----,比单纯搜字符串准得多 - 如果结果仍过多,右键点击某条匹配 → “在文件夹中查找”,把范围收窄到
src/或lib/这类生产代码目录
搜第三方库调用位置时,import 和 require 行比包名本身更有价值
审计依赖风险(比如已知漏洞的 lodash 版本)时,只搜 lodash 容易漏掉别名引入或动态 require。应该:
- 搜正则
import.*?lodash|require\(['"]lodash['"]\),确保捕获 import 语句和静态 require - 再补搜
from\s+['"]([^'"]*lodash[^'"]*)['"],提取实际路径,确认是否用了 symlink 或本地 patch - 配合
Ctrl+P快速打开package.json,对比dependencies与实际 import 路径是否一致——不一致可能绕过了版本约束 - 注意:ESM 动态
import()无法被静态搜索覆盖,这类调用必须靠运行时分析或 AST 工具辅助
真正卡住审计进度的,往往不是搜不到,而是搜出来 2000 行后分不清哪一行在 runtime 中实际被执行。每次点击搜索结果前,先看左边文件路径是否属于构建产物(如 dist/)、是否被条件编译排除(如 process.env.NODE_ENV === 'development'),比盲目跳转更省时间。











