AI 编码 Agent 写出的代码安全吗?isitsecure 一条命令搞定 SAST + DAST + AI 代码审查
用 Claude Code 写了一个完整的 Next.js 应用,上线前你只有一个问题:这个代码里有没有安全漏洞?
传统做法是上商业 SAST 工具、配置 DAST 扫描器、再请安全团队做人工审查——一套流程下来可能花掉一整天。对于 solo developer 或小团队来说,这个流程太重了。
isitsecure 是一个开源的 AI 安全扫描 CLI,一条命令就能对你的 Web 应用做 SAST + DAST + LLM 代码审查。它定位很明确:给使用 AI 编码工具的开发者,在 shipping 之前快速回答”这代码安全吗”。
场景:AI 写的代码谁来审?
假设你用 Claude Code 生成了一个电商 API:
claude code -p "创建一个 Node.js 商品 API,包含用户认证、商品 CRUD、订单处理"
几分钟后你拿到了一段能跑的代码——路由有、数据库连接有、JWT 认证也有。但肉眼审查几千行代码找安全漏洞几乎不可能。常见的 AI 生成代码问题包括:
- SQL 注入:直接拼接用户输入到查询字符串
- XSS:未转义的用户内容渲染到页面
- SSRF:Agent 生成的代码可能请求不受信的外部 URL
- 硬编码密钥:API key、数据库密码直接写在源码里
- 权限缺失:端点没有认证检查
- 依赖漏洞:引入了有已知 CVE 的 npm 包
isitsecure 把这些检查合并成一个命令:
isitsecure scan --repo ./my-app
它会依次运行 SAST 扫描器(静态分析源码)、DAST 扫描器(对运行的实例做动态探测)、LLM 代码审查(AI 理解代码语义找出逻辑漏洞),最后生成一份带分数的报告。
安装 isitsecure
isitsecure 需要 Python 3.11+ 和 Git,支持 macOS、Linux 和 Windows:
curl -fsSLo install.sh https://raw.githubusercontent.com/jaurakunal/isitsecure/main/install.sh bash install.sh
安装过程中会自动创建虚拟环境、安装依赖,并引导你完成首次配置(isitsecure setup)。你也可以选择手动安装:
git clone https://github.com/jaurakunal/isitsecure.git cd isitsecure python3 -m venv .venv source .venv/bin/activate pip install -e ".[all]" isitsecure setup
setup 命令会做三件事:下载 Chromium 用于 DAST 浏览器扫描、安装语言服务器(LSP)减少误报、可选配置 LLM API key 用于 AI 代码审查。
快速扫描你的应用
以扫描一个 Next.js 项目为例:
cd /path/to/your/nextjs-app isitsecure scan --repo ./
扫描过程会实时输出每个扫描器的进度和发现:
[SAST] Scanning 47 source files... ✓ ESLint security rules: 0 critical, 2 warnings ✓ Dependency audit: 1 moderate CVE (npm:lodash@4.17.20) [DAST] Starting target on http://localhost:3000... ✓ XSS check: 1 finding (search input not sanitized) ✓ SQL injection check: 0 findings ✓ CSRF check: 2 endpoints missing tokens ✓ SSRF check: 0 findings [LLM] Reviewing code semantics... ✓ Found hardcoded API key in config/environment.ts ✓ Missing authentication on /api/products/delete route ✓ Unsafe direct eval() in middleware.ts Report: https://report.isitsecure.dev/abc123 Grade: B (75/100)
isitsecure 会生成两种报告:终端里的分级报告,以及一个可交互的 HTML 页面,包含每个发现的详细描述、影响分析和修复建议。
一键修复:用 AI 修 AI 的问题
isitsecure 的亮点是 isitsecure fix 命令——一次命令完成扫描、发现漏洞、并生成修复补丁:
isitsecure fix --repo ./my-app
先用 dry-run 模式预览修复内容,确认后再实际应用:
isitsecure fix --repo ./my-app --dry-run isitsecure fix --repo ./my-app
这让流程变成了:AI 写代码 → isitsecure 扫描 → AI 修复漏洞 → 你审查确认——安全审查从数小时缩短到几分钟。
扫描模式与深度
isitsecure 支持多种扫描模式和深度:
| 模式 | 命令 | 适用场景 |
|---|---|---|
| Code-only | isitsecure scan --repo ./app --mode code-only | 只做 SAST 静态源码分析 |
| URL-only | isitsecure scan https://your-app.com | 只做 DAST 动态探测 |
| Full | isitsecure scan --repo ./app https://your-app.com --mode full | SAST + DAST + LLM 全量 |
| Authenticated | isitsecure scan --mode authenticated --auth-email user@example.com | 带登录态的扫描 |
扫描深度也支持调整:
isitsecure scan https://your-app.com isitsecure scan https://your-app.com --depth deep --llm none
集成到 AI 编码工作流
对于使用 AI 编码 Agent 的开发者,isitsecure 的典型集成方式是在代码生成后立即执行:
claude code -p "add cart feature to my app" isitsecure scan --repo ./ --mode code-only --output-file claude.md
也可以作为 Cursor 或 VS Code 的终端任务:
// .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [{
"label": "Security Scan",
"type": "shell",
"command": "isitsecure scan --repo ${workspaceFolder} --mode code-only",
"problemMatcher": []
}]
}
对于 CI/CD 流程,isitsecure 可以导出 SARIF 格式报告,集成到 GitHub Code Scanning:
isitsecure scan --repo https://github.com/you/your-app --output sarif
隐私与数据安全
isitsecure 的设计原则是本地优先:
- SAST 扫描完全在本地执行,代码不上传到任何服务器
- DAST 扫描针对你指定的目标 URL 运行
- LLM 审查支持 Anthropic 和 Google 两个 Provider,数据仅发送到对应 LLM API
- 报告文件存储在本地,支持 JSON、HTML、SARIF 等格式
如果你特别在意隐私,可以选择关闭 LLM 审查,只做本地 SAST + DAST:
isitsecure scan --repo ./your-app --llm none
这样所有扫描都完全在本地完成,不依赖任何外部 AI 服务。
总结
isitsecure 解决了一个很实际的问题:AI 编码 Agent 大幅提高了写代码的速度,但代码安全审查的瓶颈没有改变。传统 SAST 工具配置复杂、误报率高,而人工审查在海量 AI 生成代码面前不现实。
它的本地优先 + AI 辅助修复的组合,让开发者可以在 shipping 之前快速回答”这代码安全吗”。对于 solo developer、小团队、以及所有用 AI 编码工具加速开发的人来说,这是一个低成本高回报的安全手段。
相关链接