Vibe Coding 安全吗?真实风险与发布前必查事项
Vibe coding 适合个人工具和原型,对于有真实用户的正式应用,它也可以是安全的,但前提是你要补上“只要描述出来、看看效果就行”这种做法所跳过的检查。真正危险的问题从屏幕上是看不出来的:用户能打开彼此的数据、密钥被放在浏览器里、公开表单没有任何限制。本指南讲解真正会造成麻烦的风险、如何处理密钥、需要多少审查,以及发布前要做的 30 分钟检查。
完整的技术清单请参阅我们的AI 构建应用安全检查清单。本页是为不读代码的人准备的、更简短实用的版本。
为什么 vibe coding 有自己的风险
做 vibe coding 时,你是通过使用应用来判断它好不好的。这能发现按钮失灵和布局难看的问题,却发现不了只有在别人以不同于你的方式使用时才会出现的问题:陌生人、机器人,或是在地址栏里乱改网址的好奇用户。
AI 模型写出的代码大多看起来合理,而且大部分确实没问题。但它们往往针对你所要求的内容进行优化——“让仪表盘显示我的项目”——却可能不会添加你没提到的保护——“并且不显示别人的项目”。解决办法不是停止使用 vibe coding,而是明确地要求这些保护,然后去测试它们。
你的应用风险有多高?快速评估
| 你的应用 | 风险 | 你需要什么 |
|---|---|---|
| 只有你自己使用、不含敏感数据的个人工具 | 低 | 把密钥移出代码,基本就够了。 |
| 带表单的公开网站或落地页 | 低到中 | 表单限制、机器人防护、页面中不含密钥 |
| 用户注册并存储自己数据的应用 | 中 | 本页的全部内容 |
| 涉及支付、健康、金融、儿童或证件数据 | 高 | 本页的全部内容,外加开发者审查 |
请诚实地判断你属于哪一类。很多应用一开始属于第一类,却在没有人做出决定的情况下慢慢滑向第三类。
真正会造成麻烦的风险
1. 用户能看到彼此的数据
这是 AI 构建的应用中最常见也最严重的问题。页面只向每个用户展示他自己的记录,所以看起来一切正常。但如果有人在地址栏或请求中改掉 ID,服务器就会返回任意一条记录。因为你总是用自己的账号测试,所以永远看不到这个问题。
如何检查: 创建两个账号。用 A 登录,打开 A 的一条记录并记下地址。在无痕窗口中用 B 登录,粘贴该地址。你应该看到“未找到”,而不是 A 的数据。
提示词:
检查每一个读取、修改或删除用户数据的服务端接口。每个接口都必须确认已登录用户有权访问该特定记录。列出这些接口,说明每个接口如何检查权限,并修复任何没有检查的接口。
2. 密钥放错了地方
密钥是任何能授予访问权限的东西:AI 或邮件服务的 API 密钥、数据库密码、支付服务商的私钥。如果它位于运行在浏览器中的代码里,任何人都能打开开发者工具把它复制走。如果它被提交到了公开仓库,机器人几小时内就会找到它。
如何检查: 直接问 AI。
列出这个应用使用的每一个 API 密钥、令牌和密码。对每一个,说明它存储在哪里,以及它是否会被发送到浏览器。把所有位于代码中或前端的密钥,迁移到服务端的密钥管理中。
3. 没有限制的公开表单和接口
联系表单、注册和 AI 功能都会被机器人发现。如果没有限制,你会收到垃圾信息、虚假账号,或者因为 AI 接口被调用上千次而收到一笔高额账单。
提示词:
为注册、登录、联系表单以及每个调用 AI 服务的接口添加频率限制。为公开表单添加蜜罐字段。告诉我你选择的限制值。
4. 信任浏览器
任何由浏览器决定的内容都可以被用户修改:价格、折扣、测验答案、“是否管理员”标记。真正重要的规则必须在服务器端执行。
提示词:
找出所有由浏览器决定、而本应由服务器决定的地方:价格、总额、权限、角色、分数。把这些检查移到服务器端。
5. 没有退路
一次错误的修改,或一个恶意用户,都可能删除数据。如果没有备份也没有回滚方式,一个小失误就会变成永久损失。请确保你的工具为代码提供检查点,为数据库提供备份。参见如何备份应用数据库。
正确处理密钥
密钥造成的可避免损失比其他任何问题都多,所以规则集中列在这里:
- 永远不要把真实密钥粘贴到聊天中。 聊天内容会被保存、分享和截图。请把密钥放在工具的密钥管理或环境变量中。(什么是环境变量和密钥。)
- 从服务器调用付费服务。 浏览器请求你的服务器;服务器用密钥去调用 AI 或支付服务。
- 测试与正式使用分开用密钥,这样泄露的测试密钥就不会动到真实资金。
- 在 AI 和邮件服务商的后台设置消费上限。
- 怀疑密钥泄露时立即轮换。 先创建新密钥,更新密钥配置,然后删除旧密钥。
在 Mythex 上,密钥保存在项目设置中而不在代码里,智能体可以使用它们,而密钥的值不会出现在聊天中。我们关于如何保护 API 密钥的指南涵盖了更多服务商。
需要多少代码审查?
Vibe coding 意味着你不需要阅读每一行代码。你也确实没有必要。但对于某些代码,应该有人去看。
- 个人工具: 除了这里的检查,不需要其他审查。
- 有用户账号的应用: 审查登录和数据访问的工作方式。你可以让 AI 用通俗的语言解释一遍,并检查解释是否符合你的预期。
- 涉及支付或敏感数据的应用: 请开发者检查认证、权限、支付处理以及任何存储个人数据的部分。这需要他们几个小时,而不是重写。
即使没有开发者,下面这个提示词也很有用:
用通俗的语言解释,这个应用如何判断一个用户是谁,以及他被允许看到什么。指出相关文件。然后列出你认为安全审查人员应该关注的任何内容。
我们关于如何审查 AI 生成的代码的指南解释了审查人员关注什么,你可以把它交给负责审查的人。如果你的工具允许导出代码或同步到 GitHub,安排审查就很容易;在 Mythex 上,这两项都属于 Pro 功能。
发布前 30 分钟检查
在把链接分享给圈子之外的人之前,先完成这项检查。
访问权限(10 分钟)
- 两个账号、两个浏览器:B 能否通过网址打开 A 的记录?正常情况下不应该能。
- 退出登录,直接访问每个页面的地址。私密页面应该把你重定向到登录页。
- 以普通用户身份打开管理员地址,应该被拒绝访问。
密钥(5 分钟)
- 使用上面的提示词,让 AI 说明每个密钥存放在哪里。
- 打开应用,查看页面源代码,搜索“key”“secret”和“token”。
表单与滥用(5 分钟)
- 把每个表单留空提交,输入超长文本,并快速连续提交两次。
- 确认注册、登录以及任何 AI 功能都有频率限制。
数据与恢复(5 分钟)
- 清楚数据存放在哪里,以及如何恢复。
- 确认可以把代码回滚到之前能正常运行的版本。
法律与基础设置(5 分钟)
- 如果你收集个人数据,添加隐私政策并说明收集了哪些内容。参见如何撰写服务条款和隐私政策。
- 确保发布的应用使用 HTTPS。大多数构建工具(包括 Mythex)都会替你处理这一点。
如果全部通过,你的早期上线就基本没问题了。每次对登录、角色或数据做重大改动后,重复第 1–5 步。
vibe coding 平台提供什么保护,又不提供什么
好的平台会处理大量基础设施工作:HTTPS、隔离的工作空间、每个项目一个数据库、密钥存储、备份和回滚。Mythex 为每个项目提供私有工作空间和数据库,把密钥放在代码之外,并在每次成功修改后保存一个检查点,让你可以撤销。
但没有任何平台能了解你应用的规则。只有你知道客户不应该看到彼此的账单,或者某张优惠券只能使用一次。这些规则必须写进你的提示词,并通过你的测试来确认。
简短结论
Vibe coding 的安全程度取决于你所做的检查。对于个人工具,把密钥移出代码,放心使用即可。对于涉及他人数据的应用,每次上线前都要完成上面的 30 分钟检查,并让开发者审查支付和敏感数据部分。想了解这些风险在真实项目中是什么样子,请阅读我们的 vibe coding 案例;想从一开始就带着这些检查来构建,请参阅如何用 vibe coding 构建应用。
常见问题
Vibe coding 安全吗?
用于个人工具和原型、且不涉及敏感数据时,它是安全的。对于允许他人注册、存储数据或付款的应用,只有在补上 vibe coding 常常跳过的检查之后才算安全:服务端的访问规则、不写进代码的密钥、对公开表单的限制,以及对涉及资金或个人数据部分的审查。
vibe coding 应用最大的安全风险是什么?
访问控制失效:一个已登录的用户可以读取或修改另一个用户的数据,通常只是改一下请求中的 ID。用自己的账号测试时永远发现不了,所以这类问题非常常见。应该用两个账号专门测试它。
AI 生成的代码会泄露我的 API 密钥吗?
会,如果密钥出现在运行于访客浏览器中的代码里,或者被提交到了公开仓库。请把密钥保存在工具的密钥管理或环境变量中,从服务器端调用外部服务,并让 AI 列出每个密钥被用在哪些地方。
vibe coding 应用需要开发者审查吗?
个人工具或早期原型不需要。在你要直接收款、存储健康、金融或儿童数据,或者向大量用户开放之前,应该请开发者审查。导出代码或 GitHub 访问权限会让审查更容易安排。
在 vibe coding 平台上,我的代码和数据安全吗?
这取决于平台,请阅读其安全和隐私页面。在 Mythex 上,每个项目都运行在自己的私有工作空间中,拥有独立的数据库;密钥存放在代码之外;检查点让你可以回滚有问题的修改。但应用自身的逻辑仍需要本指南中的检查。