Vibe Coding 后端安全闭坑指南:6个直接发给AI的安全审查提示词

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 说"已经做了安全处理",要看它把风险规则、处理位置、验证证据一项项交出来。

核心记住这几句话:

  1. 前端传来的关键数据,后端必须重新判断
  2. 密码和管理员账号,后端必须强制约束
  3. 多角色项目,系统权限设计要提前写清楚
  4. 用户输入不能直接进入关键语句
  5. 该严的地方必须严,不该复杂的地方不要乱加

📌 关联阅读: