一项研究发现,AI生成的代码出现重大问题的可能性是人工编写代码的1.7倍,安全漏洞风险高2.74倍。如果你曾使用Cursor、Claude Code或GitHub Copilot构建过项目,你的项目很可能存在五个最常见的安全漏洞中的至少一个。以下是它们是什么,以及如何找到它们。
- 45% 的AI生成代码至少包含一个安全漏洞
- 1.7倍 更容易出现重大问题(相比人工编写代码)
- 2.74倍 更容易产生安全漏洞
- 最常见的: 硬编码API密钥、缺少输入验证、无行级安全
- 审计时间: 典型的快速开发项目需要2-3小时
- 最后验证: 2026年4月
为什么AI代码容易受到攻击
AI编码工具优化的目标是"能否运行?"而不是"是否安全?"。当你让Cursor"添加用户身份验证"时,它生成的代码能够进行用户认证。但它不会自动添加速率限制、输入清理、CSRF保护或安全会话管理——因为你没有要求这些功能。
AI精确地编写你描述的内容。安全需要描述你自然而然不会想到的事情——边界情况、恶意输入、未授权访问模式。如果你的提示中没有,你的代码中就没有。
五个最常见的漏洞
1. 前端代码中硬编码的API密钥。 AI经常将API密钥直接放在客户端JavaScript或React组件中。任何人都可以打开浏览器开发工具查看它们。修复方法:将所有密钥移到环境变量(.env文件),仅在服务器端访问。耗时:15分钟。
2. 数据库上没有行级安全。 如果你使用Supabase(快速开发中很常见),AI生成的代码通常会给每个认证用户访问其他用户数据的权限。修复方法:启用行级安全并添加按用户策略。耗时:30分钟。
3. 没有服务器端输入验证。 表单接受任何内容——脚本、超大载荷、SQL注入尝试。AI添加了客户端验证(用户可以绕过),但跳过了服务器端验证。修复方法:在每个API端点添加Zod模式或类似的验证。耗时:每个端点30分钟。
4. 没有速率限制。 任何人都可以每秒向你的API发送1000次请求。没有限流,没有防滥用保护。修复方法:通过Upstash Redis或类似工具添加速率限制。耗时:20分钟。
5. 未受保护的路由。 仪表板页面、管理面板和用户数据端点在加载时没有检查用户是否已登录。修复方法:向每个受保护的路由添加身份验证中间件。耗时:15分钟。
觉得有价值? 我们每周发布AI构建项目的安全指南。加入安全构建的读者社群 →
如何审计你的项目
对使用AI编码工具构建的任何项目运行此检查清单:
搜索整个代码库以查找硬编码的密钥。运行:grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" .在你的项目目录中。前端文件中的任何匹配都是关键漏洞。
检查每个API端点的输入验证。打开每个API路由文件。如果它直接使用req.body而没有验证,则存在漏洞。
验证数据库安全性。如果使用Supabase,检查身份验证→策略标签。如果没有RLS策略,每个用户都可以查看其他用户的数据。
在每个页面上测试身份验证。在隐身模式下打开浏览器(未登录),导航到应用中的每个页面。如果任何仪表板或特定用户页面加载,该路由则未受保护。
检查速率限制。尝试使用简单脚本快速连续调用你的API端点100次。如果全部100个都成功,则没有速率限制。
有关完整的安全检查清单,请参阅我们的快速开发应用安全完整指南。有关最常见的错误及其修复方法,请阅读每个快速开发者犯的5个安全错误。
思维转变
AI编写可运行的代码。你需要确保代码是安全的。这是两种不同的技能。每个对AI编码工具的提示都应该包括安全需求以及功能需求。"添加用户身份验证、速率限制、输入验证和受保护路由"会产生远比"添加用户身份验证"更安全的代码。
我们的提示优化器可以帮助你自动为任何编码提示添加这些安全规范。
这是我们每周做的事情。 关于AI工具、工作流程和诚实观点的深度分析——没有炒作,没有冗余。加入我们 →
披露:本文中的某些链接是会员链接。我们只推荐我们亲自测试过并定期使用的工具。请参阅我们的完整披露政策。