promptgarten 🌱
🌍 DE
指南●●●5 分钟 · +50 XP

用 AI 做安全审计:检查代码漏洞

AI 智能体能自动发现许多安全漏洞——但关键的发现始终需要人来确认。

AI 安全审计做什么

AI 智能体会阅读你的代码或一个 diff,寻找已知的安全漏洞模式:SQL 注入、不安全的反序列化、硬编码密码、缺失的权限检查。这比逐行手动阅读要快得多。

常见发现

常见的发现包括:注入漏洞(SQL、命令、XSS)、缺失的授权检查、泄露的密钥(如 API 密钥)、弱加密以及像 eval() 这样不安全的函数调用。这些模式在实际代码中反复出现,通常是因为时间紧迫或缺乏经验造成的。

局限性在哪里

智能体能够识别模式,但它不会自动理解你的威胁模型:谁是潜在的攻击者,最有价值的目标是什么,哪些妥协是可以接受的?同一个发现在一个场景中可能是无害的,在另一个场景中却可能是致命的——只有了解系统的人才知道。

关键问题由人来把关

自动审查只是初步筛查,不能替代人工检查。尤其涉及身份验证、支付数据或访问权限的发现:在把它标记为已解决或忽略之前,一定要先让人确认。而且,本身基于 AI 的安全工具也可能被代码中的恶意文本欺骗——审查未知的、不可信的代码需要格外小心。

示例

示例提示词:"使用一个子智能体,检查登录路由的 diff 是否存在安全漏洞:注入、缺失的授权、泄露的密钥。把每个发现按 OWASP 类别归类,并标出哪些需要人在合并前确认。"

🛠️ 练习——自己动手试试

让智能体检查一小段刻意写得不安全的代码(比如一个用字符串拼接 SQL 查询的登录函数)是否存在安全漏洞。

  1. 写一个或找一个带有已知漏洞的函数,比如 `query = "SELECT * FROM users WHERE name='" + input + "'"`。
  2. 让智能体检查这个函数,并按 OWASP 类别(注入、身份验证等)对发现进行分类。
  3. 有针对性地提问:"在真正合并之前,我需要让人确认这些发现中的哪些,为什么?"

自查清单

  • 智能体是否正确识别并指出了这个 SQL 注入问题?
  • 它对严重程度/关键性的评估是否现实,还是只是笼统地说'危险'?
  • 你能否解释清楚,为什么这样的发现在被标记为已解决之前需要人工确认?

小测验

为什么 AI 安全审查不能替代人工对关键发现的检查?

来源

相关主题

在实践中保护 agent 安全 ●●○Vibe coding 中的安全问题 ●●○Prompt Injection ●●●用 AI 做 code review:全新视角,而不是自我打分 ●●○