# security-testing-platform **Repository Path**: wuchenlhy/security-testing-platform ## Basic Information - **Project Name**: security-testing-platform - **Description**: 用AI写的安全测试平台,通过docker实现sonarqube,dependency-check,semgrep的项目安全扫描 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-20 - **Last Updated**: 2026-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安全测试平台 基于 Docker 的集成安全测试平台。所有扫描工具都在 Docker 容器中运行 —— 无需本地安装任何扫描工具(仅需 Docker 本身)。 ## 集成工具(全部通过 Docker 执行) | 工具 | Docker 镜像 | 扫描内容 | |------|-------------|----------| | **Semgrep** | `semgrep/semgrep:latest` | 多语言静态分析(SAST) | | **OWASP Dependency-Check** | `owasp/dependency-check:latest` | 项目依赖比对 NVD 漏洞数据库 | | **SonarQube** | `sonarsource/sonar-scanner-cli:latest` | 代码质量、安全热点、缺陷(需 SonarQube 服务端) | ## 快速开始 ### 1. 安装 Python 依赖 ```bash pip install -r requirements.txt ``` ### 2. 启动 Docker 确保已安装并运行 Docker Desktop: ```bash docker info # 应返回正常信息 ``` ### 3. 启动 SonarQube 服务端(用于 Sonar 扫描) ```bash docker compose -f docker/docker-compose.yml up -d # 访问 http://localhost:9000(默认账号 admin / admin) # 生成令牌:右上角头像 → My Account → Security → Generate Tokens set SONAR_TOKEN=你的令牌 # Windows CMD $env:SONAR_TOKEN="你的令牌" # PowerShell export SONAR_TOKEN=你的令牌 # Linux/Mac ``` ### 4. 启动平台 ```bash python run_web.py # 仪表盘地址:http://127.0.0.1:5555 ``` ## 工作原理 1. **新建项目** —— 配置 Git 地址、分支、编译命令,并选择启用的工具 2. **点击扫描** —— 平台自动执行: - 克隆 Git 仓库到临时工作区 - 执行编译命令(可选) - 为每个启用的工具启动 Docker 容器 - 将结果解析为统一的漏洞数据模型 - 生成汇总的 HTML 报告 3. **查看报告** —— 每次扫描生成可分享的报告链接: ``` http://localhost:5555/api/reports/<扫描ID> ``` ## 架构 ``` Web 仪表盘 (Flask) │ ProjectManager 项目配置 CRUD(Git地址/分支/编译命令) │ ScanPipeline 克隆 → 编译 → 扫描 → 报告(后台线程) │ DockerScanner Docker 容器编排 ┌───────┼───────┐ │ │ │ semgrep dep-check sonar (各自独立容器) │ │ │ └───────┼───────┘ │ ReportGenerator 统一 JSON + HTML 报告 │ /api/reports/ 可分享的报告链接 ``` ## 项目配置 每个项目保存以下信息: - **Git 地址** —— 要克隆扫描的代码仓库 - **分支** —— 要检出的 Git 分支 - **编译命令** —— 扫描前的可选编译步骤(如 `npm install`、`pip install -r requirements.txt`) - **语言** —— 自动检测或手动指定(Python、Java、JavaScript、Go、多语言) - **SonarQube 项目标识** —— 用于 SonarQube 项目识别 - **启用的工具** —— 选择 3 个工具中哪些参与扫描 ## API 接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/projects` | 获取所有项目列表 | | POST | `/api/projects` | 创建项目 | | GET | `/api/projects/` | 获取项目详情 | | PUT | `/api/projects/` | 更新项目 | | DELETE | `/api/projects/` | 删除项目 | | POST | `/api/projects//scan` | 触发扫描 | | GET | `/api/scans` | 获取所有扫描记录 | | GET | `/api/scans/` | 获取扫描状态 | | GET | `/api/scans//log` | 实时日志 SSE 流 | | GET | `/api/reports/` | 查看 HTML 报告 | | GET | `/api/reports//json` | 下载 JSON 报告 | | GET | `/api/docker/status` | 检查 Docker 可用性 | ## 环境变量 | 变量 | 是否必需 | 说明 | |------|----------|------| | `SONAR_TOKEN` | Sonar 扫描需要 | SonarQube 认证令牌 | | `NVD_API_KEY` | 可选 | NVD API 密钥(加速 Dependency-Check 漏库下载) | ## 严重级别说明 | 级别 | 颜色 | 说明 | |------|------|------| | 严重(CRITICAL) | 红色 | 需立即处理 | | 高危(HIGH) | 橙色 | 严重安全风险 | | 中危(MEDIUM) | 黄色 | 建议尽快修复 | | 低危(LOW) | 绿色 | 信息性 / 低风险 | ## 许可证 MIT