做产品 PMaker
空格的键盘
AI 写代码又快又勤 —— 安全检查也得跟上,三分钟 ① 扫密钥 全仓库搜密钥、密码、Token 已提交的,删掉不够,吊销重发 ② 查权限 每个接口:有没有校验登录、有没有校验范围 用 A 的会话访问 B 的资源,看拦不拦得住 ③ 查拼接 输入进查询 / 命令 / HTML 的地方 必须参数化,不能拼字符串 还有一招 让 AI 自己先自查:提示词里加一句「密钥不硬编码、每个接口校验权限、输入全部参数化」 AI 代码和人写代码一样,过评审、过扫描、过测试 —— AI 是流水线,你是质检

AI 不会故意留漏洞,但它会忠实复刻它学到的「常见写法」——而常见写法里恰好全是这三类坑。检查的责任在你,不在工具。

AI 代码的安全检查

AI 写代码又快又勤,但不会自动替你写安全的代码。它生成的代码里,翻来覆去就三类坑:密钥硬编码、越权访问、注入。上线前过一遍,三分钟就能避免一次事故。

你会遇到的现象
  • API 密钥明晃晃写在代码里,跟着仓库一起上了云
  • 接口只查了「登录了没」,没查「能不能看这条数据」
  • 用户输入直接拼进了数据库查询字符串

三类高频坑

先知道坑长什么样,才知道要查什么:

三分钟检查清单

不管代码是 AI 写的还是人写的,上线前用这份清单过一遍:

三条里最值得亲手试一次的,是越权 用户 A 的会话 GET /orders/B-1024 403 拦住了 200 返回了 这才叫查了权限 只查了「登录没」 ① 扫密钥 全仓库搜密钥、密码、Token。发现已提交的,立刻吊销重发——只是删掉远远不够。 ② 查权限 逐接口问两遍:查登录了吗?查「当前用户对这条数据的访问权」了吗? ③ 查所有「拼」的地方 用户输入进入查询、命令、HTML 时,必须参数化,不能字符串拼接。
这三条三分钟就能过完,但它们挡住的是AI 生成代码里最高频的三类坑。还有一条成本为零的:在提示词里直接要求「密钥不硬编码、每个接口校验权限、用户输入全部参数化」——效果立竿见影。

为什么 AI 特别容易犯

三个原因,都跟 AI 的工作方式有关:

原理讲得更细的版本在AI 代码的常见漏洞。这里只补一条认知:别问「AI 为什么老写不安全代码」,问你自己为什么不审查。工具提速不等于质量提高,安全这条线本来就要人来守。交给 AI 之前,先判断这单活配不配——参见什么能交给 AI。