我用AI写了十几个项目,从没想过一个问题:
AI写的代码,安全吗?
直到Anthropic开源了一个代码安全审计工具。我拿自己的微信小游戏跑了一遍。
3分52秒,扫了16个JS文件,5个安全维度。
结果:3个问题,全是LOW级别。没有可利用漏洞,但有几个细节值得聊聊。
这个工具是什么
Anthropic开源了一套代码安全审计框架,叫 defending-code-reference-harness。
核心能力:让Claude从攻击者角度审视你的代码——自动建威胁模型、识别攻击面、逐个模块扫描漏洞。
在Claude Code里一行命令就能跑:
/vuln-scan ~/Desktop/mini-game/water-sort
拿我的小游戏跑了一遍

它做了这几件事:
- 先识别项目类型——WeChat Mini Game,16个JS文件,Canvas 2D
- 确定信任边界——用户触摸输入→游戏状态,wx.getStorageSync→配置读取
- 划出5个扫描区域:存储、输入处理、分享&广告、关卡数据、配置信息
- 逐一读取源码分析
整个过程3分52秒。
扫描结果

3 findings(0 HIGH, 0 MEDIUM, 3 LOW, 2 low-confidence)
说实话,看到这个结果我松了口气。但这3个问题还是值得拆解一下。
F-001:硬编码绝对路径泄露开发者信息
tools/generate_levels.js:293 里有一行:
/Users/xxxx/Desktop/mini-game/water-sort/js/data/levels.js
虽然这个文件不会打包到线上(tools目录被排除了),但如果代码开源,你的macOS用户名就暴露了。
修复很简单:换成 path.join(__dirname, '../js/data/levels.js')。
这个置信度最高(0.7),是3个里面最"真实"的问题。
F-002:存档数据没做校验
js/utils/storage.js:5 里,localStorage的JSON直接merge进来,没有schema校验。
越狱设备上可以篡改本地存档——改关卡、改道具数量。
对单机休闲游戏影响不大。但如果以后加排行榜或内购,这就是一个隐患。
置信度只有0.3——工具自己也觉得"对这种游戏来说可能不算事"。
F-003:urlCheck关着
project.config.json:21 里 urlCheck: false。
这是开发设置,正式发布时微信会强制开启。工具指出来了,但也标注了"development setting, WeChat enforces in production anyway"。
置信度0.2,基本是提醒性质。
它的整体评价
最后一段话让我印象深刻:
这个代码库攻击面很窄——纯客户端Canvas 2D游戏,没有网络请求,没有DOM操作,没有eval/动态代码,没有服务端交互。发现的问题都是纵深防御类的,不是可利用漏洞。
说白了——架构选对了,安全问题自然少。
3个认知
AI代码有安全盲区
Claude Code写逻辑很强,但它不会主动考虑攻击场景。你不说"做防篡改",它就不会加校验。你不说"用相对路径",它就直接写绝对路径。
它是执行者,不是安全工程师。
架构比代码更重要
我这个项目只有3个LOW级问题,不是因为代码写得多好——是因为离线+Canvas+无用户输入这个架构,天然就没什么攻击面。
如果是一个有登录、有API、有数据库的项目,结果会完全不同。
一个人做产品,至少让AI review一遍
在公司里,你的代码至少有一个人看过。独立开发者呢?从写到上线,可能没有第二个人看过一行代码。
3分52秒,免费,比什么都没有强。
你也试试
Anthropic这个工具开源了:github.com/anthropics/defending-code-reference-harness
clone下来,在Claude Code里用 /vuln-scan 扫你的项目。
花几分钟,可能发现你从来不知道的问题。
