教学演示:晴岚工作室、海棠品牌和合同均为虚构;只验证“客户资料会不会被别家看到”这一项,不代表整站安全。
起点
目标是做一个客户资料页:
- A 登录后,能按客户名查询合同和回款状态;
- 只应该看到自己名下的客户;
- 查不到时,页面要有明确提示。
第一版看起来是正常的:登录、提问、回答,页面也能显示结果。
问题
换一个客户名再问,屏幕上出现了另一家的合同:客户名、合同编号、金额、时间都在。
这不是“AI 编了一份合同”。内容是演示数据里的真实记录,问题是它在拿资料的时候,没有先确认“现在是谁在问”。
根因
问题不在模型会不会写查询,而在取数边界:
- 页面有登录,但登录身份没有进入取数条件;
- 查询按“客户名”直接取,而不是按“当前账号 + 客户名”取;
- 页面上看起来只有 A 的入口,但接口没有限制范围。
换句话说,它在门口没有查身份,直接把档案柜打开了。
修复
修复分三步:
- 门口先确认:每次取数前确认当前登录身份;
- 只拿自己的范围:查询条件必须带上身份边界,而不是只按客户名;
- 失败说清楚:查不到或无权限时,页面直接说“没有”,不返回空白或别家数据。
改完再试:
- A 登录,只能看到 A 的客户;
- B 登录,只能看到 B 的客户;
- 用 B 的账号查 A 的客户,页面直接说没有。
只验证一项
这次只验证了“客户资料会不会被别家看到”这一项。其他功能(新增、导出、多人协作、移动端)没有验证。
所以结论只说:这一项过了。不能把它扩展成“整站安全”,也不能说“AI 做的系统都可以放心用”。
这个案例真正教什么
- 能生成、能跑、能上线是三件事;
- 权限要在取数入口检查,不是隐藏按钮;
- 只验证一项,就只说这一项;
- 上线前要有检查清单和回滚方案。
如果你也在做类似项目,先下载上线前检查清单,把权限、错误路径和部署逐项过一遍;需要一起看,可以预约 15 分钟。
继续读
- AI 代码为什么一上线就出问题 — 从案例看上线风险
- 上线前检查清单 — 逐项检查
- Vibe Coding 入门 — 从概念到上线