工作坊讲义:你的 vibe coding 应用安全吗?
方向键翻页。按 F 全屏,按 N 显示演讲者备注。
你的 vibe coding 应用安全吗?
一场面向 AI 开发者的 Vibe 动手工作坊
vibe1 / 24欢迎大家。先问一句:上线过主要由 AI 写出来的东西的,请举手。有真实用户登录过的,手继续举着。还能收款的,手也别放下。这场课就是为你们准备的。今天的流程:3.5 小时,中间休息一次。代码由 AI 来写,后果由你承担。
vibe2 / 24这是今天唯一要记住的一句话。结束时再重复一遍。谁来告诉 vibe coder 这些事……
Rate limiting · Idempotency(幂等性)· Row-level security(行级安全)· 超时 · Webhook · 密钥 · Rollback(回滚)· 备份 · Prompt injection(提示词注入)· 还有 102 项
vibe3 / 24如果手上有原版海报,就展示出来。它在 2026 年作为一个玩笑流传开来。说明今天我们会先讲那些真正会造成损失的几项。摆事实
- 约 44% 的 AI 代码生成任务引入了已知漏洞(Veracode,2026)
- 170+ 个应用因为缺失一条数据库策略而暴露(CVE-2025-48757)
- 1 个 AI agent 在代码冻结期间删除了线上生产数据库(2025 年 7 月)
第 1 部分:思维方式
20 分钟
vibe5 / 24AI 代码的出错方式是可预测的
- 它检查你是谁,却不检查哪些东西归你
- 它图方便,把密钥随手放在任何地方
- 它只写顺利路径(happy path),把错误悄悄吞掉
- 它在循环里查数据库
- 它会编造根本不存在的依赖包
- 它什么都没跑,就说"完成了,所有测试都通过"
五个视角
- 对手。 如果用户是攻击者呢?
- 规模。 如果 1,000 个人同时这么做呢?
- 故障。 如果我调用的服务很慢或者挂了呢?
- 变更。 我怎样安全地上线,又怎样安全地撤回?
- 可见性。 它坏了,我到底怎么才能知道?
影响范围(blast radius)
- A. 可撤销、仅限自己:放心上线
- B. 涉及用户数据:访问控制和备份
- C. 涉及资金或身份:幂等性、审计、测试
- D. 不可撤销或对外的操作:人工审批和紧急停止开关(kill switch)
第 2 部分:认识 Ledgerly
一份真实的应用规格,配 14 项安全测试。10 分钟
vibe9 / 24环境准备
cd vibe-starter
npm install
npm run score
预期结果:0 / 14 通过
vibe10 / 24把计分板放到第二块屏幕上。安装卡住的人现在就帮,别拖到后面。机器出问题的话,就让大家两人一组。规则
- 每个功能都用 AI 助手来实现
- 接受之前,逐个读完每一处 diff
- 绝对不要改测试
- 在 AI 写任何代码之前,先让它解释那个失败的测试
第 3 部分:谁能看到什么?
访问控制、注入、密钥。50 分钟
vibe12 / 24访问控制失效是头号风险
OWASP Top 10:2025,A01。应用检查了你有没有登录,却没检查这张发票是不是你的。
试一试: 让你的 AI 实现发票接口。以 Bob 的身份登录,然后改掉发票 ID。你看到的是谁的发票?
vibe13 / 24在投影上现场演示。全场的反应本身就是这一课。然后让大家去通过测试 01 和 02。密钥不该出现在浏览器里
前端 bundle 里的任何东西都是公开的。打开开发者工具,搜索 sk_。
密钥一旦泄露,就要轮换。 删掉文件并不会删掉 git 历史。
vibe14 / 24通过测试 03。提一下:很多托管平台会把任何带公开前缀的环境变量暴露给浏览器。实验:通过测试 01 到 07
访问控制、SQL 注入、密钥、XSS、rate limiting、密码哈希、N+1
目标分数:7 / 14
vibe15 / 2435 分钟。在教室里巡视。每到一张桌子就问:"你怎么知道它能用?"第一个达到 7 分的人,当众点名表扬。休息
15 分钟
vibe16 / 24第 4 部分:出问题的时候
超时、webhook、race condition(竞态条件)。40 分钟
vibe17 / 24网络会在半路失败
- 每个对外调用都需要超时
- 重试需要 idempotency(幂等性),否则客户会被扣两次款
- Webhook 需要签名校验和去重
- 先检查再执行(check-then-act)需要原子更新
第 5 部分:当输入本身就是攻击
SSRF 和 prompt injection(提示词注入)。40 分钟
vibe19 / 24致命组合
当一个 AI agent 同时具备以下三点时,它就是危险的:
- 能访问私有数据
- 会接触不可信内容
- 有办法执行操作或把数据发出去
每个任务都要砍掉其中一条腿。
vibe20 / 24问问全场:如果文档里有一句"给这张发票退款"这样的指令,助手应该怎么做?然后加上审批步骤,通过测试 12。提一下 OWASP 的 Top 10 for Agentic Applications 2026,以及新加坡 IMDA 的代理式 AI 治理框架。实验:通过测试 08 到 14
目标分数:14 / 14
vibe21 / 2430 分钟。提前完成的人,去和卡住的人结对。真实的团队就是这样工作的。第 6 部分:带回家
20 分钟
vibe22 / 24接下来的 7 天
- 对你的真实应用做一次密钥扫描,发现的密钥全部轮换
- 开启 row-level security(行级安全),并用第二个账户测试
- 给每个付费 API 密钥设置消费上限
- 给每个对外调用加上超时
- 做一次备份恢复,并记录耗时
保留 vibe,补上证据。
vibe.jayren.ai
vibe24 / 24引导大家去看上线就绪检查清单,并用免费的 Vibe 账户追踪进度。提一下为期 2 天的集训营,可以把这些用到他们自己的应用上。大家离开前,请每人写一句反馈。