安全测试
OWASP、鉴权、漏洞扫描。
30 分钟
安全测试
安全测试 验证系统能否抵御未授权访问、注入、敏感数据泄露等威胁。对照 /roadmaps/qa「Security Testing」节点,本课基于 OWASP Top 10 讲解鉴权测试与漏洞扫描入门。
学习目标
- 了解 OWASP Top 10 中与 API/Web 最相关的条目
- 设计鉴权、授权、会话相关的测试用例
- 区分 DAST、SAST、依赖扫描的角色
- 将安全测试嵌入 Spring Boot 与 CI 流程
核心概念
OWASP 重点(Web/API)
| 风险 | 测试要点 |
|---|---|
| 失效的访问控制 | 水平/垂直越权:改 ID 访问他人资源 |
| 注入 | SQL、命令、模板注入;参数化查询 |
| 敏感数据暴露 | HTTPS、日志脱敏、错误信息不泄露栈 |
| 安全配置错误 | 默认账号、调试端点生产暴露 |
| SSRF | 服务端请求用户可控 URL |
鉴权测试用例
TC-SEC-001: 未登录访问 /admin → 401/403
TC-SEC-002: 普通用户访问他人 profile → 403
TC-SEC-003: JWT 过期 → 401 + 无敏感 body
TC-SEC-004: 重复 Content-Type 边界(文件上传)
扫描工具
- OWASP ZAP:代理被动/主动扫描 Web
- Burp Suite:手工 + 自动化渗透辅助
- SAST:SonarQube、SpotBugs 静态规则
- 依赖扫描:OWASP Dependency-Check、
npm audit、Dependabot
扫描结果需 人工 triage,避免误报淹没真漏洞。
安全测试节奏
- 每个 PR:依赖扫描、SAST 规则
- 发布前:鉴权回归 + ZAP 基线扫描
- Periodic:渗透测试、红队演练(成熟团队)
与 testing-essentials/Spring 对照
| 安全测试 | Spring 实践 |
|---|---|
| 越权 API | MockMvc + 不同角色 token(test-mockmvc) |
| Security 配置 | Spring Security、@PreAuthorize、sb-test |
| CI 依赖扫描 | test-ci、gha-java |
功能测试断言 200;安全测试必须断言 403/401 与 无数据泄露。单元测试无法替代 DAST,但可覆盖权限分支逻辑。
练习
- 为 tracks API 设计 3 条越权测试用例