一项研究发现,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生成的代码正是你描述的内容。安全性需要你描述那些不自然想到的事项——边界情况、恶意输入、未授权的访问模式。如果你的提示中没有这些,代码中就不会有。

5个最常见的漏洞

1. 前端代码中硬编码的API密钥。 AI经常将API密钥直接放在客户端JavaScript或React组件中。任何人都可以打开浏览器DevTools看到它们。修复:将所有密钥移到环境变量(.env文件),仅在服务器端访问。耗时:15分钟。

2. 数据库上没有行级安全。 如果你使用Supabase(在临时编码中很常见),AI生成的代码通常会给每个经过身份验证的用户访问其他用户数据的权限。修复:启用行级安全并添加按用户的策略。耗时:30分钟。

3. 没有服务器端输入验证。 表单接受任何内容——脚本、超大负载、SQL注入尝试。AI添加了客户端验证(用户可以绕过),但跳过了服务器端验证。修复:在每个API端点添加Zod模式或类似的验证。耗时:每个端点30分钟。

4. 没有速率限制。 任何人都可以每秒对你的API进行1,000次调用。没有限制,没有滥用保护。修复:通过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工具、工作流程和诚实观点的深度探讨——没有炒作,没有填充。加入我们 →

披露:本文中的某些链接是联盟链接。我们只推荐我们亲自测试过并定期使用的工具。查看我们的完整披露政策