复制粘贴之后:AI 产出的代码要人工看什么

August 6, 2026
有分析指出 AI 生成的代码携带的安全缺陷约为人写代码的 2.7 倍。这是一份最小审查清单。
代码审查
安全
AI建站

"能跑"不等于"能上线"

AI 生成的代码有一个特点:它几乎总是能跑起来。这恰恰是问题所在——能跑掩盖了一切,你没有任何反馈信号提示你去看第二眼。

Veracode 2025 年的一份分析指出,AI 生成的代码携带的安全缺陷密度约为等量人写代码的 2.74 倍。这个倍数不算离谱,但考虑到 AI 生成的代码量正在爆炸式增长,绝对数量很可观。

你不需要成为安全专家。下面这几项,非专业人士花二十分钟也能查完,能挡掉大部分事故。

一、密钥有没有写死在前端

最高频、后果最直接的一类。

// 这行如果出现在浏览器能加载到的文件里,密钥就已经泄露了
const client = new SomeAPI({ apiKey: "sk-live-xxxxxxxx" });

怎么查:在项目里全局搜 sk-api_keysecretpasswordtoken,逐个确认它出现在服务端文件里,而不是客户端组件里。

Next.js 项目要特别注意:任何以 NEXT_PUBLIC_ 开头的环境变量都会被打进前端产物,不管你多想让它保密。

二、有没有真正的后端

AI 建站工具大多产出的是"前端外壳":表单看起来能提交,实际上没有任何持久化。

怎么查:提交一次表单,然后去数据库或收件箱里确认数据真的到了。别相信界面上的"提交成功"提示——那个提示很可能是硬编码的。

三、权限校验在哪一侧

这一条最容易被忽略,因为它在界面上完全看不出来。

// 前端隐藏了删除按钮 —— 这不是权限控制
{user.isAdmin && <DeleteButton />}

按钮藏起来了,但接口还在。任何人直接调用那个接口都能删数据。

怎么查:任何"只有管理员能做"的操作,去看对应的服务端接口,确认那里也做了身份和权限判断。前端隐藏 UI 不是权限控制,是视觉建议。

四、用户输入怎么处理

  • 输入有没有在服务端校验(前端校验只是体验,不是安全)
  • 用户提交的内容渲染回页面时,有没有被当作 HTML 执行
  • 数据库查询有没有用参数化写法,而不是字符串拼接

五、依赖是不是真实存在

AI 会引用不存在的包名。更糟的是有人专门注册这些"幻觉包名"投毒。

怎么查:安装依赖时留意有没有报错;对陌生的包,去 npm 上看一眼周下载量和最后更新时间。下载量极低又刚发布的包要格外警惕。

六、性能上的低垂果实

AI 生成的代码通常偏重。不用做深度优化,先看三件事:

  1. 图片 —— 有没有把 4MB 的原图直接放上首页
  2. 依赖体积 —— 为了一个日期格式化引了整个 moment.js?
  3. 首屏请求数 —— 打开开发者工具 Network 面板,看首屏发了几十个还是几百个请求

跑一次 Lighthouse,它会直接告诉你最大的那块在哪。

七、错误处理

AI 喜欢写"快乐路径":一切顺利时的代码。

  • 网络请求失败时,用户看到的是什么?
  • 数据为空时,页面是空白还是有提示?
  • 后端返回错误时,错误信息会不会把内部细节暴露给用户?

怎么查:断网,然后把你的站点走一遍。

二十分钟版清单

[ ] 全局搜索密钥,确认没有出现在客户端代码里
[ ] 提交一次表单,确认数据真的落库/到邮箱
[ ] 管理员操作的服务端接口有权限校验
[ ] 用户输入在服务端也做了校验
[ ] 依赖包在 npm 上真实存在且有正常下载量
[ ] 跑一次 Lighthouse,看性能与无障碍分项
[ ] 断网走一遍,确认错误态有合理提示

一句话

你发布它,你就对它负责。 "这是 AI 写的"在任何场合都不是免责事由——无论是对用户、对客户,还是对监管。


MotionSites 上的提示词会显式约束技术栈和依赖,减少幻觉包和密钥外泄的概率。

全站提示词,会员免费

一次性付费,享全站提示词

  • 全站提示词免费下载
  • 不限次数,随时复制

年会员

¥59.00

365 天

永久会员

¥99.00

永久有效

查看会员
复制粘贴之后:AI 产出的代码要人工看什么 | MotionSites