Vibe Coding 后端安全闭坑指南:6个直接发给AI的安全审查提示词
用 Vibe Coding 写后端,最危险的就是"功能跑通了就以为安全了"。
功能跑通,只代表正常流程走完了;后端安全,看的是"不该通过的请求能不能被挡住"。
这件事不像前端页面,一眼就能看出哪里乱了,对没有技术背景的人尤其难判断。AI 说的"没问题,可以上线了"只是安抚,没有任何验收价值——你真正要问的不是"安不安全",而是:风险在哪里?规则在哪里?代码里由谁处理?怎么证明它真的拦住了不该通过的请求?
这篇文章给你 6 个可以直接复制发给 AI 的安全审查提示词,帮你在不懂代码的情况下,也能审查出后端的安全漏洞。
核心认知:功能跑通 ≠ 安全
在开始之前,先建立三个基本认知:
认知 1:AI 的"已做安全处理"不可信
AI 说"已经做了安全处理",就像施工队说"已经做好防水"——你不应该直接相信,而应该问:防水用的是什么材料?刷了几层?有没有做闭水试验?
认知 2:前端校验挡不住攻击者
前端校验只负责用户体验(比如输入框提示"密码太弱"),但攻击者可以绕开整个前端,直接对着接口发请求。你在页面上做的格式校验、按钮置灰、字段隐藏,对他们一点用都没有。
认知 3:安全是分散在每一步的
后端安全不是一次性的大检查,而是分散在请求处理的每一步,就像请求进来要过一道道关卡,每道关卡只负责检查一个方面,少一条就是一个口子。
5 道核心关卡(先建立全局认知)
后端安全可以拆成 5 道关卡,下文给出的 6 个提示词就是针对这些关卡的:
| 关卡 | 通俗解释 | 出问题会怎样 |
|---|---|---|
| 身份认证 | 这个请求是谁发的?有没有登录? | 未登录用户就能看到别人的数据 |
| 权限控制 | 这个人能不能做这件事? | 普通用户能访问管理员功能 |
| 输入校验 | 前端传进来的数据可不可信? | 用户输入恶意代码,后端直接执行 |
| 数据归属 | 这条数据是不是属于他自己? | 改一下订单号,就能看到别人的订单 |
| 注入防护 | 用户填的内容,会不会被后端当成命令去执行? | 攻击者可以拖走整张用户表 |
6 个直接发给 AI 的安全审查提示词
提示词 1:先让 AI 把安全边界说清楚
使用场景: 项目开始安全审查的第一步,先让 AI 把所有风险摊开。
直接复制发给 AI:
请根据项目架构设计文档和当前业务功能输出后端安全边界表。
不要只说已做安全处理。
请按接口输入、登录状态、系统权限设计、密码规则、数据归属、注入风险分别说明:
- 风险是什么?
- 当前在哪里处理?
- 处理规则是什么?
- 如何验证?
- 哪些还没有验证。
如果回答太专业看不懂,直接加一句:用大白话重讲一遍,别用技术名词。
使用技巧:
- 如果 AI 的回答全是技术名词,直接追问:"用通俗的话再讲一遍"
- 重点看"哪些还没有验证"这一栏,这是你的风险清单
提示词 2:接口输入默认不可信
使用场景: 检查前端传过来的数据,后端有没有重新校验。
核心原则: 前端校验只负责用户体验,真正影响业务结果的内容必须在后端重新判断一遍。
直接复制发给 AI:
请审查当前后端接口的输入安全。
不要只说已做参数校验,请按接口说明:
- 哪些参数来自前端?
- 哪些参数会影响身份、系统、权限、金额、库存、数据归属或数据库写入?
- 每个关键参数在哪里校验?
- 校验失败返回什么?
- 是否有测试请求证明?
你不用看懂全部代码,只看它有没有把关键输入和普通输入分开:
- 普通输入错了:最多是页面显示不对
- 关键输入错了:就是越权改数据、金额错误、库存错误
使用技巧:
- 重点关注"金额、库存、权限"相关的参数,这些一旦出错损失最大
- 如果 AI 说"已做校验"但说不清在哪里,追问:"具体在哪一行代码?"
提示词 3:密码和管理员账号必须强制约束
使用场景: 检查账号密码相关的安全规则。
核心原则: 密码强度必须强制要求,密码存储必须哈希(不可逆处理),管理员账号必须有额外限制。
直接复制发给 AI:
请审查当前后端的账号和密码安全规则。
请说明注册、登录、修改密码、重置密码、创建管理员账号分别在哪里处理:
- 密码强度规则是什么?(是否禁止123456、abc123这类弱密码)
- 密码是否哈希存储?(绝不能明文存数据库)
- 管理员账号是否有额外限制?
- 哪些地方还没有验证?
使用技巧:
- 如果 AI 说"密码已加密",追问:"用的是什么加密方式?"(正确答案是 bcrypt、scrypt 等哈希算法,不是 AES 等可逆加密)
- 管理员账号是重中之重,影响整个系统
提示词 4:系统权限和数据归属
使用场景: 检查多角色项目的权限设计,这是最容易漏的越权漏洞。
核心原则: 90% 的 Vibe Coding 项目都漏了这一层——只做了"要不要登录",却漏掉了"登录之后能不能动这条数据"。
直接复制发给 AI:
请根据项目功能设计文档输出系统权限设计表。
每个接口都要说明:
- 是否需要登录?
- 允许哪些角色访问?
- 是否只能操作自己的数据?
- 管理员是否可以访问?
- 权限判断在哪个文件或中间件处理?
- 无权访问返回什么?
- 有没有测试证明?
这张表不是形式主义,是给后面继续写业务用的规则,
AI 新增接口时才知道沿用哪一套权限。
使用技巧:
- 重点检查"改一下 ID 能不能看到别人的数据"(水平越权)
- 多角色项目(普通用户、商家、运营、管理员)尤其要仔细审查
- 如果权限规则散落在代码各处,说明需要重构
提示词 5:防止注入风险
使用场景: 检查用户输入是否会被后端当成命令执行。
核心原则: 用户输入的内容本来只该是数据,却被后端当成了指令去执行(最典型的是 SQL 注入,攻击者可以拖走整张用户表)。不要让 AI 自己发明过滤规则,优先用框架自带的成熟方案。
直接复制发给 AI:
请检查当前接口是否存在注入风险。
重点检查 SQL 注入、数据库查询注入、命令注入、HTML 或模板内容注入。
请说明:
- 哪些位置使用了框架自带的 ORM 参数化查询?
- 哪些位置使用了白名单校验?
- 哪些位置使用了内容转义或内容清洗?
- 如果存在字符串拼接用户输入的情况,请标记为风险并给出修复方案。
使用技巧:
- 如果 AI 自己写了过滤代码来防注入,这反而是风险点——自己写的过滤往往漏得最多
- 正确答案应该是"用了框架自带的参数化查询"
提示词 6:防止过度防御
使用场景: 检查安全逻辑是否过于复杂,堆了太多死代码。
核心原则: 安全不是把代码写得越复杂越好。很多 AI 会为了显得安全,堆一堆永远跑不到的判断分支(死代码),这类代码不会让系统更安全,只会白白增加代码量,把真正的业务逻辑淹没。
直接复制发给 AI:
请审查当前接口安全逻辑是否存在过度防御。
请区分:
- 必须校验的业务规则
- 框架已经处理的基础校验
- 可以由前端体验层处理的提示校验
- 永远不会触发的防御分支(死代码)
不要为了安全感新增重复判断或不可能成立的条件。
任何新增安全封装都必须说明解决什么真实风险。
使用技巧:
- 如果前面已经强制登录了,后面又反复判断"如果没登录怎么办",这就是过度防御
- 如果参数类型已经校验过了,再叠一堆永远为真的条件,也是过度防御
使用流程建议
什么时候用?
| 阶段 | 建议 |
|---|---|
| 项目启动时 | 先用提示词 1 建立全局认知 |
| 写新功能时 | 每完成一个功能,用对应的提示词审查 |
| 上线前 | 6 个提示词全部过一遍 |
| 收到用户反馈时 | 根据反馈选择对应提示词复查 |
怎么判断 AI 的回答是否靠谱?
| AI 的回答 | 判断 |
|---|---|
| "已做安全处理" | ❌ 不可信,要求具体说明 |
| "在第 X 行代码做了 Y 校验" | ✅ 可信,可以验证 |
| "没有风险" | ❌ 不可信,要求列出检查项 |
| "存在以下风险..." | ✅ 可信,这是你需要的 |
闭坑总结
后端安全不要听 AI 说"已经做了安全处理",要看它把风险规则、处理位置、验证证据一项项交出来。
核心记住这几句话:
- 前端传来的关键数据,后端必须重新判断
- 密码和管理员账号,后端必须强制约束
- 多角色项目,系统权限设计要提前写清楚
- 用户输入不能直接进入关键语句
- 该严的地方必须严,不该复杂的地方不要乱加
📌 关联阅读:
- Vibe Coding 系列:2026 年 Vibe Coding 技术栈选型指南
- Prompt Engineering 系列:Prompt Engineering 进阶:从"写指令"到"设计可迭代的提示词系统"