docs(test): audit batch 2 test report
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# 审计整改批 2(鉴权与越权)测试报告
|
||||
|
||||
## 一、 测试背景 (Background)
|
||||
|
||||
2026-09-19 审计([.doc/audit/2026-09-19-system-deep-audit.md](../audit/2026-09-19-system-deep-audit.md))安全面发现:H1 dev/test legacy 兜底静默、H2 docgov 批注身份伪造与读类端点越权、H3 会话查询水平越权、H4 登录无限流、H8 compose 弱口令兜底、M8 测试 flag 名笔误。
|
||||
|
||||
## 二、 测试目标 (Test Objectives)
|
||||
|
||||
- H2/H3 修复后既有鉴权测试不回退(server 包全 PASS)
|
||||
- H4 限流器三态(放行/阻断/窗口过期/重置)有单测覆盖
|
||||
- H8 compose 在无 `.env` 时 `:?required` 硬拦截
|
||||
|
||||
## 三、 测试方案与环境 (Test Plan & Environment)
|
||||
|
||||
- 分支 `fix/audit-b2-authz-hardening` → dev(merge `08f4e0b`)
|
||||
- 层级:单元(限流器)+ server 包回归 + compose 插值验证
|
||||
|
||||
## 四、 预期结果 (Expected Results)
|
||||
|
||||
- 批注/认领的 actor 一律取 principal;读类端点非项目成员 403
|
||||
- `handleGetChatTurn`/`ListChatSessions`/`GetUserContext` 跨用户 403
|
||||
- 登录窗口内第 11 次尝试 429;成功后计数清零
|
||||
- 无 `.env` 时 `docker compose config` 报 required missing
|
||||
|
||||
## 五、 实际测试结果与判定 (Actual Results & Evaluation)
|
||||
|
||||
### 用例 1:限流器单测
|
||||
- `go test -run TestLoginRateLimiter -v ./internal/server/`
|
||||
```
|
||||
--- PASS: TestLoginRateLimiter_BlocksAfterMaxAttempts (0.00s)
|
||||
--- PASS: TestLoginRateLimiter_ResetClearsWindow (0.00s)
|
||||
--- PASS: TestLoginRateLimiter_WindowExpiry (0.02s)
|
||||
```
|
||||
判定:PASS
|
||||
|
||||
### 用例 2:server 包回归(含既有鉴权测试)
|
||||
- `go test -short ./internal/server/` → `ok 13.917s`
|
||||
判定:PASS(`security_p0_test.go`/`security_penetration_test.go` 等不回退)
|
||||
|
||||
### 用例 3:compose required 拦截(无 .env 目录)
|
||||
- `env -i docker compose -f cc-test.yml config`
|
||||
```
|
||||
error while interpolating services.app.environment.ADMIN_PASSWORD: required variable ADMIN_PASSWORD is missing a value: required
|
||||
error while interpolating services.app.environment.APP_DB_DSN: required variable SYSTEM_DB_PASSWORD is missing a value: required
|
||||
```
|
||||
判定:PASS
|
||||
|
||||
### 用例 4:全量回归
|
||||
- `go vet ./...` 零告警;`go test -short ./...` 无 FAIL
|
||||
判定:PASS
|
||||
|
||||
## 六、 自动化测试套件汇总 (Test Suite Execution)
|
||||
|
||||
- `go vet ./...` 零告警
|
||||
- `go test -short ./...` 55 包全 PASS
|
||||
- 新增 `login_rate_limit_test.go` 3 个用例 PASS
|
||||
|
||||
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
|
||||
|
||||
- 批 2 六个子项全部修复并合入 dev(merge `08f4e0b`),达到合入标准。
|
||||
- **待验证**:H2/H3 的越权负例(非项目成员访问 docgov 文档应 403)建议补 Playwright/HTTP 负例测试进批 3 或独立 hardening 批;当前由人工 code review + 既有鉴权测试不回退兜底。
|
||||
- H1 仅加告警未删除兜底(删除留 backlog,见审计报告开放问题)。
|
||||
|
||||
## 证据
|
||||
|
||||
- merge commit:`08f4e0b`(dev worktree)
|
||||
- fix commits:`d2903a1`(H1-H3)、`2dd8f46`(H4/H8/M8)
|
||||
Reference in New Issue
Block a user