指南●●●5 分钟 · +50 XP
用 AI 做安全审计:检查代码漏洞
AI 智能体能自动发现许多安全漏洞——但关键的发现始终需要人来确认。
AI 安全审计做什么
AI 智能体会阅读你的代码或一个 diff,寻找已知的安全漏洞模式:SQL 注入、不安全的反序列化、硬编码密码、缺失的权限检查。这比逐行手动阅读要快得多。
常见发现
常见的发现包括:注入漏洞(SQL、命令、XSS)、缺失的授权检查、泄露的密钥(如 API 密钥)、弱加密以及像 eval() 这样不安全的函数调用。这些模式在实际代码中反复出现,通常是因为时间紧迫或缺乏经验造成的。
局限性在哪里
智能体能够识别模式,但它不会自动理解你的威胁模型:谁是潜在的攻击者,最有价值的目标是什么,哪些妥协是可以接受的?同一个发现在一个场景中可能是无害的,在另一个场景中却可能是致命的——只有了解系统的人才知道。
关键问题由人来把关
自动审查只是初步筛查,不能替代人工检查。尤其涉及身份验证、支付数据或访问权限的发现:在把它标记为已解决或忽略之前,一定要先让人确认。而且,本身基于 AI 的安全工具也可能被代码中的恶意文本欺骗——审查未知的、不可信的代码需要格外小心。
示例
示例提示词:"使用一个子智能体,检查登录路由的 diff 是否存在安全漏洞:注入、缺失的授权、泄露的密钥。把每个发现按 OWASP 类别归类,并标出哪些需要人在合并前确认。"
🛠️ 练习——自己动手试试
让智能体检查一小段刻意写得不安全的代码(比如一个用字符串拼接 SQL 查询的登录函数)是否存在安全漏洞。
- 写一个或找一个带有已知漏洞的函数,比如 `query = "SELECT * FROM users WHERE name='" + input + "'"`。
- 让智能体检查这个函数,并按 OWASP 类别(注入、身份验证等)对发现进行分类。
- 有针对性地提问:"在真正合并之前,我需要让人确认这些发现中的哪些,为什么?"
✅ 自查清单
- ☐ 智能体是否正确识别并指出了这个 SQL 注入问题?
- ☐ 它对严重程度/关键性的评估是否现实,还是只是笼统地说'危险'?
- ☐ 你能否解释清楚,为什么这样的发现在被标记为已解决之前需要人工确认?
小测验
为什么 AI 安全审查不能替代人工对关键发现的检查?
来源
- Claude Code Doku: Security Guidance Plugin ↗ code.claude.com
- GitHub: anthropics/claude-code-security-review ↗ github.com
- OWASP Top 10 ↗ owasp.org
- Claude Code: Code review ↗ code.claude.com