免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


用Claude/Cursor写代码?小心这10个致命漏洞!

发布日期:2025-10-25 23:08:30 浏览次数: 1537
作者:与AI同行之路

微信搜一搜,关注“与AI同行之路”

推荐语

AI写代码虽快,但安全隐患不容忽视!看看AI生成的代码中隐藏的十大安全漏洞。

核心内容:
1. AI代码生成工具带来的安全隐患与风险
2. 常见AI代码漏洞实例解析(SQL注入、硬编码密钥等)
3. OWASP Top 10安全风险详解及防范建议

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

说实话,最近用Claude Code和Cursor写代码真的是爽到飞起。以前要花一天才能搞定的功能,现在可能一两个小时就能跑起来了。但你想想,这种速度背后藏着什么问题?

速度的代价

真的是,我们现在写代码的速度越来越快,但很多人根本没意识到,AI在帮你生成代码的同时,也可能在悄悄给你埋雷。

你看啊,以前一个团队可能只有5个人,代码量也就那样,出了安全问题还能慢慢排查。但现在呢?用了AI工具之后,一个人的产出可能顶得上以前一个小团队,代码量蹭蹭往上涨。问题是,安全检查的流程跟上了吗?

怎么说呢,这就像开车一样。以前你开60迈,出点小问题还能刹得住。现在AI帮你开到了120迈,但你的刹车系统还是以前那套,你说慌不慌?

那些AI容易踩的坑

比如说,AI特别喜欢生成这种代码:

// 看起来没啥毛病对吧?
app.get('/user', (req, res) => {
  const query = `SELECT * FROM users WHERE id = ${req.query.id}`;
  db.query(query, (err, results) => {
    res.json(results);
  });
});

这代码能跑,看着也挺正常的。但其实这就是个典型的SQL注入漏洞啊!有人随便在URL里加点东西,你的数据库就完蛋了。

还有硬编码的API密钥,这个真的是见得太多了:

const apiKey = 'sk-1234567890abcdef'// 千万别这么干!

你想想,这代码一提交到GitHub,全世界都能看到你的密钥了。不过如果你真的提交了,githup就要给你发邮件了,这个一点githup做的还不错。

OWASP Top 10 - 你得知道的十大安全问题

说到安全,就不得不提OWASP Top 10了。OWASP这个组织专门研究Web应用安全,他们整理出来的十大安全风险,基本上涵盖了最常见、最要命的那些坑。

这十大风险具体是啥?

  1. A01: 访问控制失效 - 说白了就是该拦的没拦住,用户能看到不该看的东西
  2. A02: 加密失败 - 密码用MD5存储,API密钥直接写代码里,这都是典型问题
  3. A03: 注入攻击 - SQL注入、命令注入,这个真的太常见了
  4. A04: 不安全的设计 - 从一开始设计就没考虑安全问题
  5. A05: 安全配置错误 - 默认密码没改,不必要的功能没关
  6. A06: 过时的组件 - npm包半年没更新,里面的漏洞早就被爆出来了
  7. A07: 认证失败 - 密码策略太弱,会话管理有问题
  8. A08: 数据完整性失败 - 不安全的反序列化,供应链攻击
  9. A09: 日志和监控失败 - 出了问题都不知道发生了什么
  10. A10: 服务端请求伪造(SSRF) - 攻击者利用你的服务器去攻击其他系统

有人已经动手了

GitHub上有个叫Alexander Dunlop的老哥,他就注意到了这个问题。他基于OWASP Top 10整理了三个提示词,专门用来帮Claude、ChatGPT和Cursor识别代码里的安全问题。

真的挺有意思的,他还专门录了个YouTube视频演示怎么用。虽然是第一次录视频,但内容确实干货满满。

三层安全提示词系统

他搞了三个不同的提示词,分别针对不同的使用场景:

1. 安全代码审查员(Security Code Reviewer)

这个提示词的作用就是全面扫描代码漏洞。你把代码丢给AI,它会按照OWASP Top 10的标准,一条一条帮你检查,哪里有问题,怎么修,都给你列得清清楚楚。

比如说,它会这样告诉你:

🚨 A03: SQL注入
严重程度: 严重
位置: user.js:第42行
问题: 用户输入直接拼接到SQL查询中
风险: 攻击者可以执行任意SQL命令,获取或删除数据库数据
修复方案: 使用参数化查询

2. Cursor安全助手(Cursor Security Assistant)

这个是专门给Cursor IDE准备的。你在写代码的时候,它会实时给你提示哪里可能有安全问题。

比如你刚写完一个数据库查询,它马上就能告诉你:"嘿,这样写有SQL注入风险,改成这样会更安全..."

就像你身边坐了个安全专家,随时帮你把关。

3. 安全开发助手(Secure Development Assistant)

这个更偏向于整体的开发流程。从项目规划、架构设计,到测试部署,全流程都能给你安全建议。

适合团队负责人用,帮整个团队建立安全的开发规范。

为什么这个很重要?

你跟任何一个安全专家聊,他们都会告诉你,安全从来不是靠一层防护就能搞定的。

其实就是堆叠防护层,一层不行还有下一层。这些提示词当然不是万能的,不可能解决所有问题,但多一层保护总是好的嘛。

怎么说呢,就像你家门锁,装一把锁肯定比不装强,但装两把会更安全。这些AI安全提示词就是给你多加的那把锁。

具体怎么用?

说了这么多,到底怎么用这些提示词呢?我给你捋一捋:

方法一:代码审查模式

  1. 去GitHub把提示词下载下来
  2. 选择适合的提示词(比如security-code-reviewer.md)
  3. 把你的代码和提示词一起丢给Claude或ChatGPT
  4. AI会按照OWASP标准帮你检查代码

比如说,你写了个登录功能,就可以这样:

[粘贴security-code-reviewer提示词]

请帮我检查下面这个登录功能的安全问题:

[你的登录代码]

AI就会开始逐行分析,告诉你哪里有问题,该怎么改。

方法二:实时开发模式(Cursor用户)

如果你用Cursor,那就更方便了:

  1. 把cursor-security-prompt.md的内容加到Cursor的规则文件里
  2. 正常写代码
  3. AI会在你写代码的时候实时提示安全问题

真的很实用,就像副驾驶上坐了个安全专家。

方法三:团队流程优化

如果你是技术负责人,想给整个团队建立安全规范:

  1. 参考secure-development-assistant.md
  2. 在项目规划阶段就引入安全考虑
  3. 在CI/CD流程中加入安全检查
  4. 定期做安全培训

这个比较系统,但长期来看收益最大。

实际效果怎么样?

说实话,这些提示词的效果还真不错。作者自己在实际项目中用下来,发现了不少传统工具检查不出来的问题。

比如说:

改进前:

  • 登录逻辑里有SQL注入漏洞
  • 配置文件里硬编码了API密钥
  • 权限检查有遗漏,普通用户能访问管理员功能

改进后:

  • 全部改用参数化查询
  • API密钥用环境变量管理,还加了加密
  • 权限检查收紧了,该拦的都能拦住

一些实用建议

根据我自己的使用经验,给你几个建议:

对于新项目

从一开始就把安全考虑进去,比事后补救容易太多了。就像盖房子,地基打好了后面就省心。

对于老项目

不要想着一次性把所有问题都改完,那不现实。可以这样:

  1. 先检查认证和授权相关的代码
  2. 然后看用户输入处理和数据验证
  3. 再查外部集成和API接口
  4. 最后检查配置和部署设置

一步一步来,别急。

配合其他工具使用

这些提示词最好配合代码上下文提取工具一起用:

  • JavaScript/TypeScript项目用repomix
  • Python项目用onefilellm

把代码上下文提取出来,再给AI分析,效果会更好。

常见的安全问题举例

我给你举几个特别常见的例子,你看看自己的代码里有没有:

SQL注入问题

危险写法:

const userId = req.query.id;
const query = `SELECT * FROM users WHERE id = ${userId}`;
db.query(query);

安全写法:

const userId = parseInt(req.query.id);
if (!userId || userId < 1) {
  return res.status(400).json({ error'无效的用户ID' });
}
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);

看到区别了吗?安全写法做了三件事:

  1. 验证输入是不是数字
  2. 检查数字是否合法
  3. 用参数化查询,不是直接拼接字符串

硬编码密钥问题

危险写法:

const apiKey = 'sk-1234567890abcdef';
const dbPassword = 'mypassword123';

安全写法:

const apiKey = process.env.API_KEY;
const dbPassword = process.env.DB_PASSWORD;

// .env文件 (这个文件要加到.gitignore里!)
// API_KEY=sk-1234567890abcdef
// DB_PASSWORD=mypassword123

密钥这种东西,真的千万别写代码里。写在环境变量里,然后.env文件记得加到.gitignore。

弱密码哈希

危险写法:

const crypto = require('crypto');
const hash = crypto.createHash('md5').update(password).digest('hex');

安全写法:

const bcrypt = require('bcrypt');
const hash = await bcrypt.hash(password, 12);

MD5早就不安全了,现在都用bcrypt这种专门的密码哈希算法。

几个小技巧

说几个我自己用下来觉得挺好的技巧:

提交代码前的快速检查清单

每次提交代码前,问自己这几个问题:

  • 用户输入都验证了吗?
  • 密钥和配置都用环境变量了吗?
  • 认证检查都加上了吗?
  • 错误信息会不会泄露敏感信息?
  • 依赖包都是最新的吗?

这几个问题过一遍,能避免80%的常见问题。

代码审查重点关注

团队做代码审查的时候,重点看这几个地方:

  1. 认证和授权逻辑
  2. 输入验证和清理
  3. 错误处理和日志记录
  4. 配置和密钥管理

这些地方最容易出问题,也最需要仔细检查。

善用AI的优势

AI在这几个方面特别有用:

  • 模式识别:它见过的代码比你多得多,能快速识别常见的不安全模式
  • 上下文理解:能理解代码的业务逻辑,不是单纯的规则匹配
  • 实时反馈:写代码的时候就能给建议,不用等到代码审查

但也要注意,AI的建议不是百分百准确的,还是要自己判断。

写在最后

真的是,AI编码工具给我们带来了前所未有的效率提升,但安全问题也随之而来。速度快了,不代表就可以忽视安全。

这就好比高速公路,限速提高了,但安全设施也得跟上。你不能说因为限速120就不系安全带了对吧?

这套OWASP AI安全提示词,我觉得是个不错的尝试。它不能解决所有问题,但至少能帮我们多一层保护。而且用起来也不麻烦,就是多复制粘贴几次的事。

最重要的是,得有这个意识。不要觉得代码能跑就行了,安全问题往往就藏在那些"能跑"的代码里。

资源链接

如果你想试试这些提示词,可以去这里:

  • GitHub仓库: https://github.com/Alexanderdunlop/OWASP-AI-Security-Prompts
  • OWASP Top 10官方文档: https://owasp.org/Top10/
  • 作者的YouTube演示视频(搜索"OWASP AI Security Prompts")

记住,安全不是一次性的工作,而是个持续的过程。代码写得再快,也要花时间检查安全问题。

你现在用AI写代码的时候,会关注安全问题吗?或者说,你遇到过什么印象深刻的安全坑?欢迎在评论区聊聊~


一些实用的安全检查工具推荐:

  • repomix - JavaScript/TypeScript项目上下文提取
  • onefilellm - Python项目上下文提取
  • SonarQube - 静态代码分析
  • OWASP ZAP - 动态安全测试
  • Snyk - 依赖漏洞扫描

这些工具配合AI安全提示词一起用,效果会更好。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询