提交 72170d64 authored 作者: 陈泽健's avatar 陈泽健

docs(security): 更新安全测试模块HANDOFF交接文档

Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 4c3301ee
# HANDOFF — 安全测试模块会话交接文档 # HANDOFF — 安全测试模块会话交接文档
> **生成时间**: 2026-07-21 > **生成时间**: 2026-07-22
> **当前分支**: `platform-auto-test` > **当前分支**: `platform-auto-test`
> **开发窗口**: 安全测试模块(与会议管理窗口并行) > **开发窗口**: 安全测试模块(与会议管理窗口并行)
> **最近提交**: `68b2fbbf` feat(security): 安全测试报告生成服务+格式对齐参考实现 > **最近提交**: `4c3301ee` feat(security): 前端报告中心适配安全报告+补充API3/4/6/7/9/10用例
> **状态**: ✅ 安全测试引擎 + 报告生成服务已全部完成并推送 > **状态**: ✅ 安全测试 P1 任务全部完成并推送
--- ---
...@@ -25,21 +25,59 @@ ...@@ -25,21 +25,59 @@
## 一、本次任务(已完成) ## 一、本次任务(已完成)
### 任务:为平台增加 API 接口安全测试能力 + 报告生成 ### 任务:安全测试模块 P1 待办
**核心成果** **核心成果**
1. ✅ 后端安全测试引擎(SecurityExecutor + HttpClient 签名 + AuthHelper 多账号) 1. ✅ 前端报告中心适配安全报告(Markdown 渲染 + 主题适配 + 下载功能)
2. ✅ 12 个安全测试模块 + 24 个安全测试用例 2. ✅ 补充 API3/4/6/7/9/10 安全测试用例(18 个新用例,总计 42 个)
3. ✅ 前端适配(Cases.vue / Execution.vue 支持 security 类型)
4. ✅ 执行调度分流修复(security 用例不再误走 PlaywrightExecutor)
5. ✅ 端到端自测通过(3/3 用例正常执行)
6.**安全测试报告生成服务**(7 章节 Markdown,格式对齐参考实现)
--- ---
## 二、已完成事项清单 ## 二、已完成事项清单
### 2.1 后端新增文件(9个) ### 2.1 前端改造
| 文件 | 说明 |
|------|------|
| `frontend/package.json` | 新增 `marked` 依赖 |
| `frontend/src/views/Reports.vue` | 安全报告 Markdown 渲染 + 类型标签 + 下载功能 + 主题适配 |
**Reports.vue 关键变更**
- 报告列表新增"报告类型"列,区分"安全测试"和"UI自动化"
- 新增安全测试报告弹窗,使用 `marked` 渲染 Markdown 内容
- `viewReport()` / `downloadReport()``case_type` 分流
- GitHub 风格 Markdown 样式,使用 CSS 变量适配深色/浅色主题
- 弹窗内和列表操作栏均支持下载
### 2.2 后端用例补充
| 文件 | 说明 |
|------|------|
| `backend/scripts/create_security_cases.py` | 新增 18 个用例定义 |
**新增用例清单**
| 模块 | 用例数 | 用例 ID | 风险等级 |
|------|--------|---------|----------|
| API3 - 对象属性级别授权失效 | 3 | sec_2_3_001/002/003 | high/medium/high |
| API4 - 资源消耗不受限 | 3 | sec_2_4_001/002/003 | high/medium/medium |
| API6 - 无限制访问敏感业务流 | 3 | sec_2_6_001/002/003 | high/medium/high |
| API7 - 服务器端请求伪造 | 3 | sec_2_7_001/002/003 | critical/critical/high |
| API9 - 库存管理不当 | 3 | sec_2_9_001/002/003 | high/medium/low |
| API10 - 不安全的第三方API集成 | 3 | sec_2_10_001/002/003 | high/medium/critical |
### 2.3 文档
| 文件 | 说明 |
|------|------|
| `Docs/PRD/需求文档/_PRD_安全测试模块P1待办任务_需求文档.md` | P1 需求文档 |
| `Docs/PRD/需求文档/_PRD_安全测试模块P1待办任务_计划执行.md` | P1 计划执行文档 |
---
## 三、历史已完成(前次会话)
### 3.1 后端安全测试引擎
| 文件 | 说明 | | 文件 | 说明 |
|------|------| |------|------|
...@@ -51,15 +89,10 @@ ...@@ -51,15 +89,10 @@
| `backend/app/executors/security_executor.py` | 安全测试执行引擎核心 | | `backend/app/executors/security_executor.py` | 安全测试执行引擎核心 |
| `backend/app/services/security_service.py` | 安全测试业务逻辑层 | | `backend/app/services/security_service.py` | 安全测试业务逻辑层 |
| `backend/app/services/knowledge_base.py` | 知识库(14历史漏洞 + 15华为红线 + SQL载荷) | | `backend/app/services/knowledge_base.py` | 知识库(14历史漏洞 + 15华为红线 + SQL载荷) |
| `backend/app/routers/security.py` | API 路由(13个接口,含报告 API) |
### 2.2 后端新增文件(报告生成)
| 文件 | 说明 |
|------|------|
| `backend/app/services/security_report_service.py` | 报告生成服务(7 章节 Markdown,格式对齐参考实现) | | `backend/app/services/security_report_service.py` | 报告生成服务(7 章节 Markdown,格式对齐参考实现) |
| `backend/app/routers/security.py` | API 路由(13个接口,含报告 API) |
### 2.3 后端修改文件 ### 3.2 后端修改文件
| 文件 | 修改内容 | | 文件 | 修改内容 |
|------|---------| |------|---------|
...@@ -69,7 +102,7 @@ ...@@ -69,7 +102,7 @@
| `backend/app/schemas/test_case.py` | `steps` 字段改为 Union(支持 list/dict) | | `backend/app/schemas/test_case.py` | `steps` 字段改为 Union(支持 list/dict) |
| `backend/app/services/case_service.py` | 创建用例时区分 UI(list)/security(dict) | | `backend/app/services/case_service.py` | 创建用例时区分 UI(list)/security(dict) |
### 2.4 前端新增/修改文件 ### 3.3 前端文件
| 文件 | 说明 | | 文件 | 说明 |
|------|------| |------|------|
...@@ -78,30 +111,11 @@ ...@@ -78,30 +111,11 @@
| `frontend/src/views/Cases.vue` | 安全用例显示风险等级 emoji/标签、详情弹窗 | | `frontend/src/views/Cases.vue` | 安全用例显示风险等级 emoji/标签、详情弹窗 |
| `frontend/src/views/Execution.vue` | 执行弹窗(配置选择)、分流安全/UI执行逻辑 | | `frontend/src/views/Execution.vue` | 执行弹窗(配置选择)、分流安全/UI执行逻辑 |
### 2.5 脚本文件
| 文件 | 说明 |
|------|------|
| `backend/scripts/create_security_cases.py` | 创建 12 模块 + 24 用例 |
| `backend/scripts/create_default_security_config.py` | 创建默认安全测试配置 |
| `backend/scripts/test_security_e2e.py` | 端到端执行测试 |
### 2.6 文档
| 文件 | 说明 |
|------|------|
| `Docs/PRD/需求文档/_PRD_安全测试模块需求文档.md` | 需求文档 |
| `Docs/PRD/需求文档/_PRD_安全测试模块_计划执行.md` | 计划执行文档 |
| `Docs/PRD/需求文档/_PRD_安全测试报告_设计文档.md` | 报告设计文档 |
| `Docs/PRD/需求文档/_PRD_安全测试报告格式对齐_需求文档.md` | 报告格式对齐需求 |
| `Docs/PRD/需求文档/_PRD_安全测试报告格式对齐_计划执行.md` | 报告格式对齐计划 |
| `Docs/PRD/问题处理/安全测试/*.md` | 问题处理文档 |
--- ---
## 三、安全测试报告生成服务(已完成) ## 四、安全测试报告生成服务
### 3.1 报告 7 章节结构(对齐参考实现) ### 4.1 报告 7 章节结构(对齐参考实现)
| 章节 | 编号 | 内容 | 数据来源 | | 章节 | 编号 | 内容 | 数据来源 |
|------|------|------|---------| |------|------|------|---------|
...@@ -115,47 +129,59 @@ ...@@ -115,47 +129,59 @@
| 测试环境与工具 | **六** | 服务器(含架构)/工具/标准 | SecurityConfig | | 测试环境与工具 | **六** | 服务器(含架构)/工具/标准 | SecurityConfig |
| 参考资料 | **七** | Z 盘路径 | REFERENCE_MATERIALS 常量 | | 参考资料 | **七** | Z 盘路径 | REFERENCE_MATERIALS 常量 |
### 3.2 格式对齐要点 ### 4.2 报告 API
| 对齐项 | 内容 |
|--------|------|
| OWASP 覆盖矩阵 | **5 列**(🔴高危/🟠中危/🟡低危/🔵信息/🟢安全),无"严重"列 |
| critical 处理 | 合并到 high 列统计,漏洞详情标题仍显示"严重" |
| 历史漏洞表格 | **6 列**(编号/漏洞来源/测试项/当前状态/风险等级/详情) |
| 服务器信息 | 含架构后缀 `192.168.5.44 (X86架构-欧拉)` |
| 执行完成自动生成 | 路径存入 `execution.config.report_path` |
### 3.3 报告 API
``` ```
GET /api/security/executions/{id}/report → 返回 Markdown 内容 GET /api/security/executions/{id}/report → 返回 Markdown 内容
GET /api/security/executions/{id}/report/download → 下载 .md 文件 GET /api/security/executions/{id}/report/download → 下载 .md 文件
``` ```
### 4.3 前端报告渲染
- 使用 `marked` 库渲染 Markdown
- GitHub 风格样式,CSS 变量适配深色/浅色主题
- 报告弹窗内支持下载
--- ---
## 四、当前数据状态(已入库) ## 五、当前数据状态
| 内容 | 数量 | 备注 | | 内容 | 数量 | 备注 |
|------|------|------| |------|------|------|
| 安全测试模块 | 12 | sec_api01~sec_api10 + sec_regression + sec_redline | | 安全测试模块 | 12 | sec_api01~sec_api10 + sec_regression + sec_redline |
| 安全测试用例 | 24 | 覆盖 API1/2/5/8 + 回归 + 红线(API3/4/6/7/9/10 待补) | | 安全测试用例 | 42 | 全部 OWASP API1-10 + 回归 + 红线覆盖 |
| 安全测试配置 | 1 | `sec_cfg_default`(新统一平台 192.168.5.44) | | 安全测试配置 | 1 | `sec_cfg_default`(新统一平台 192.168.5.44) |
**用例分布**
| 模块 | 用例数 |
|------|--------|
| API1 - 对象级别授权失效 | 8 |
| API2 - 身份认证失效 | 4 |
| API3 - 对象属性级别授权失效 | 3 |
| API4 - 资源消耗不受限 | 3 |
| API5 - 功能级别授权失效 | 2 |
| API6 - 无限制访问敏感业务流 | 3 |
| API7 - 服务器端请求伪造 | 3 |
| API8 - 安全配置错误 | 4 |
| API9 - 库存管理不当 | 3 |
| API10 - 不安全的第三方API集成 | 3 |
| 历史漏洞回归测试 | 3 |
| 华为安全红线检查 | 3 |
--- ---
## 、下一步计划(按优先级) ## 、下一步计划(按优先级)
| 优先级 | 待办 | 说明 | | 优先级 | 待办 | 说明 |
|--------|------|------| |--------|------|------|
| **P1** | 前端报告中心适配安全报告 | Reports.vue 增加 Markdown 渲染(markdown-it),或安全报告生成 HTML 版本 |
| **P1** | 补充 API3/4/6/7/9/10 用例 | 当前只覆盖 24 个,参考实现有 90+ |
| **P2** | WebSocket 实时进度推送 | 安全测试目前不推送步骤进度 | | **P2** | WebSocket 实时进度推送 | 安全测试目前不推送步骤进度 |
| **P2** | 执行安全测试用例并验证报告 | 需执行完整安全测试流程,验证 42 个用例 + 报告渲染 |
| **P3** | 网盘上传 + ERP 任务对接 | 参考实现的功能,平台化后可选 | | **P3** | 网盘上传 + ERP 任务对接 | 参考实现的功能,平台化后可选 |
--- ---
## 、踩坑记录(安全测试专项,绝对不要重复踩) ## 、踩坑记录(安全测试专项,绝对不要重复踩)
| # | 现象 | 根因 | 正确做法 | | # | 现象 | 根因 | 正确做法 |
|---|------|------|---------| |---|------|------|---------|
...@@ -166,37 +192,40 @@ GET /api/security/executions/{id}/report/download → 下载 .md 文件 ...@@ -166,37 +192,40 @@ GET /api/security/executions/{id}/report/download → 下载 .md 文件
| S5 | Windows curl 发中文 JSON body 失败 | Windows bash 编码 | 用 Python requests 脚本测试,不用 curl | | S5 | Windows curl 发中文 JSON body 失败 | Windows bash 编码 | 用 Python requests 脚本测试,不用 curl |
| S6 | 报告测试目标为空 | 执行记录 config 无 config_id | **回退到默认 SecurityConfig** | | S6 | 报告测试目标为空 | 执行记录 config 无 config_id | **回退到默认 SecurityConfig** |
| S7 | OWASP 矩阵多出"严重"列 | 平台有 critical 等级,参考实现没有 | **critical 合并到 high 列统计** | | S7 | OWASP 矩阵多出"严重"列 | 平台有 critical 等级,参考实现没有 | **critical 合并到 high 列统计** |
| S8 | 数据库 locked 执行用例创建脚本失败 | 另一个窗口后端服务占用数据库 | **与会议管理窗口协调脚本执行时间** |
| S9 | Windows 脚本打印 ✅❌ 报 UnicodeEncodeError | GBK 编码无法编码 emoji | `PYTHONIOENCODING=utf-8 python scripts/xxx.py` |
--- ---
## 、启动与验证 ## 、启动与验证
```bash ```bash
# 后端(端口 8001,会议管理窗口在跑) # 后端(端口 8001,会议管理窗口在跑时用 8002
cd backend cd backend
uvicorn app.main:app --port 8001 uvicorn app.main:app --port 8001
# 验证安全测试 # 前端(端口 3001,避免与会议管理窗口冲突)
PYTHONIOENCODING=utf-8 python scripts/test_security_e2e.py cd frontend
npm run dev -- --port 3001
# 执行用例创建脚本(需确保另一个窗口未占用数据库)
cd backend
PYTHONIOENCODING=utf-8 python scripts/create_security_cases.py
``` ```
- 前端: http://localhost:3000/cases/security - 前端: http://localhost:3001/cases/security
- 安全报告: http://localhost:3001/reports/security
- API 文档: http://localhost:8001/docs(搜 security 标签) - API 文档: http://localhost:8001/docs(搜 security 标签)
- 被测系统: https://192.168.5.44 - 被测系统: https://192.168.5.44
--- ---
## 八、已提交变更(安全测试窗口) ## 九、已提交变更
**提交记录** **提交记录**
- `001a68a9` feat(security): 新增API接口安全测试模块 - `001a68a9` feat(security): 新增API接口安全测试模块
- `68b2fbbf` feat(security): 安全测试报告生成服务+格式对齐参考实现 - `68b2fbbf` feat(security): 安全测试报告生成服务+格式对齐参考实现
- `4c3301ee` feat(security): 前端报告中心适配安全报告+补充API3/4/6/7/9/10用例
**已提交文件**
- 后端新增(10个):安全测试引擎 + 报告生成服务
- 后端修改:main.py、models/__init__.py、execution_service.py、schemas/test_case.py、case_service.py、routers/security.py
- 前端:types/security.ts、api/security.ts、views/Cases.vue、views/Execution.vue
- 文档:PRD 需求文档、计划执行文档、报告设计文档、格式对齐文档
--- ---
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论