当前位置:首页>java>AI 写的代码,近一半有漏洞

AI 写的代码,近一半有漏洞

  • 2026-10-21 13:28:03
AI 写的代码,近一半有漏洞

最近看到一份报告,Veracode 2025 年发布的。

他们测了 100 多个大模型生成的代码,结论是:45% 的 AI 生成代码包含安全漏洞。

接近一半。

这个数字让我有点意外。不是说 AI 写代码又快又好吗?


其实仔细想想也合理。

大模型是怎么学会写代码的?从 GitHub 上几十亿行开源代码里学的。

问题是,这些开源代码本身就有大量不安全的写法。

AI 学会了写代码,也学会了写烂代码。

它不知道什么是安全,什么是不安全。它只知道"大家都这么写"。


更有意思的是具体的失败率。

SQL 注入?AI 防得还行。毕竟这个太经典了,教科书里写烂了。

但 XSS 跨站脚本攻击?失败率 86%。

日志注入?失败率 88%。

为什么差这么多?

SQL 注入有标准解法,用参数化查询就完事了。AI 背下来了。

但 XSS 和日志注入需要理解上下文。这个输出会显示在哪里?用户能控制哪些输入?

AI 不懂这些。它只会套模板。


还有个数据挺扎心的。

GitGuardian 统计发现,用 Copilot 的仓库,密钥泄露率比普通仓库高 40%。

不是 AI 故意泄露密钥。

是用了 AI 之后,人松懈了。

"反正 AI 写的,应该没问题吧。"

然后就不仔细看了。然后密钥就 commit 上去了。


有人说,那我让 AI 写完代码,再让 AI 检查一遍安全问题不就行了?

想法是好的。

但 Veracode 那份报告还有个发现:让 AI 在安全和不安全的写法之间选择,它有 45% 的概率选错。

掷硬币的水平。

你让它检查,它可能觉得不安全的代码挺安全的。


那怎么办?

我的建议是:把 AI 当结对编程的同事,别当自动驾驶。

同事写的代码你会直接 merge 吗?不会吧。你会 review。

AI 写的也一样。

几个具体建议:

1. 敏感代码自己写

认证、授权、支付这些逻辑,别让 AI 碰。或者让它写完你一行行看。

AI 最容易犯的错就是授权检查只放在前端、角色判断写死、信任用户传来的 ID。

2. 上 SAST 工具

就是静态代码扫描。CodeQL、SonarQube 这些。

让工具帮你兜底,别靠肉眼。

3. 别硬编码密钥

AI 特别喜欢把 API Key 直接写在代码里。

每次生成完,全局搜一下 key、secret、password、token 这些词。

4. commit 之前过一遍

别写完就提交。看一眼 diff。

很多低级错误扫一眼就能发现。


说到底,AI 编程工具确实提效。

但它是"快",不是"好"。

快和好不是一回事。

用 AI 写代码省下来的时间,拿去做 code review。

这样才不会给自己埋雷。

Linky:基于 AI 的自动化外链发布工具
GitHub热榜被Claude Code刷屏了
Cursor翻车背后:AI编程的"泡沫"和"真金"

最新文章

随机文章