方案 AZ:AI 编程安全与测试体检(交付前必做)

输入校验 → 密钥管理 → 依赖审计 → 自动化测试 → review 清单

耗时
1-2 小时 / 交付
成本
低
难度
进阶

适用场景

适合交付前最后一关,系统性检查 AI 生成代码里的安全与质量隐患。

操作步骤

输入校验与注入防护

10-15 分钟

Claude Code + 你

把所有用户输入点列出来:URL 参数、表单字段、请求体、文件路径、导出文件名。重点检查 AI 生成代码里最常见的三类漏洞——XSS(前端渲染未转义)、SQL 注入(字符串拼接查库)、路径穿越(用用户输入拼文件路径)。对每个入口确认有校验或转义,至少拒绝非法输入,不要只依赖前端校验。

💡让 Claude 扫一遍「所有来自用户或请求的数据最终流向哪里」,再逐个入口确认有白名单校验或参数化查询。

密钥与敏感信息

10-15 分钟

gitleaks / git log + .env

检查 API key、token、密码是否硬编码在代码里,是否进过 git 历史或日志。AI 模型有时会把示例密钥或环境变量直接写进源码,一旦进仓库就是后患。规范做法:一律用 .env + 环境变量注入,.gitignore 排除 .env,并把已进历史的信息从历史中清除。

💡用 git log -p | grep 或 gitleaks 扫一遍历史;密钥一旦外泄,旋转(重新生成)比删除 commit 更可靠。

依赖审计

10-20 分钟

npm audit / Snyk

跑 npm audit 或依赖扫描工具,查看已知漏洞与过期版本。AI 生成的依赖往往是最新版本或它「记得」的版本,可能带已知 CVE 或已 EOL。审计结果按严重程度分级处理:高/严重漏洞优先修,无修复方案的就评估风险或替换掉这个库。

💡别盲装新包——先看下载量、维护频率、作者信誉;锁定精确版本(lockfile),避免子依赖悄悄升级引入问题。

自动化测试

30-60 分钟

Vitest / Jest / Playwright

为关键逻辑写单元测试,为关键业务路径写端到端测试。不要只测 happy path——补上边界值、异常输入、权限不足、超时这些场景。让 AI 基于你的代码生成测试用例,但你要人工补「用户会怎么出错」的场景。

💡先写会失败的用例(红),再让它通过(绿),比事后补测试更能暴露真实问题。

交付 review 清单

15-30 分钟

review 清单 + 你

按清单逐项核对:输入校验、密钥管理、依赖审计、测试覆盖、权限控制、错误处理与日志脱敏。把每一项的结论写进交付说明——谁检查的、结果如何、遗留什么风险,都留痕。这一步让「体检」不是走过场,而是可追溯的交付资产。

💡把清单固化成模板放进仓库(如 checklist.md),下次直接复用,缺项一目了然。

用到的工具

避坑清单

只测 happy path(边界必炸)

空、超长、非法、并发这些边界值正是 bug 高发区;只测正常路径的测试,错误分支第一次运行往往就发生在线上。

把密钥写进代码/仓库(泄漏后患无穷)

密钥一旦进 git 历史,删掉 commit 也没用——历史还在。泄漏后要做的是旋转密钥、清除历史,并排查日志与第三方服务是否已被扫到。

依赖盲装引入漏洞(依赖链很长)

依赖链很长,一个被攻破的传递依赖就能拖垮整个项目;装包前查信誉,装完立刻跑审计。

测试全绿但没覆盖关键路径(绿得不真实)

覆盖率数字好看不代表关键路径被测到;挑业务最重要的一条链路,从入口到落库确认被端到端覆盖。

同类工作流