# security-testing-platform **Repository Path**: wuchenlhy/security-testing-platform ## Basic Information - **Project Name**: security-testing-platform - **Description**: 一个集成化的代码安全测试平台,支持代码扫描、漏洞管理和报告生成,提供统一的可视化管理和自动化报告能力。本项目由 AI 辅助开发完成。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-20 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安全测试平台 (Security Testing Platform) > **注意:本项目由 AI 辅助开发完成。** 一个集成化的代码安全测试平台,支持代码扫描、漏洞管理和报告生成,提供统一的可视化管理和自动化报告能力。 [![Python](https://img.shields.io/badge/Python-3.10%2B-blue)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.111.0-009688)](https://fastapi.tiangolo.com/) [![Vue.js](https://img.shields.io/badge/Vue.js-3.4-4FC08D)](https://vuejs.org/) [![MySQL](https://img.shields.io/badge/MySQL-8.0%2B-4479A1)](https://www.mysql.com/) ## 核心功能 - **项目管理**:创建和管理代码项目,支持 Git 仓库自动拉取 - **扫描任务**:创建扫描任务,支持 Semgrep 静态代码扫描 - **漏洞管理**:统一漏洞查看、分类、状态跟踪(New/Confirmed/Fixed/Ignored) - **报告中心**:支持 JSON、HTML 格式报告下载,查看原始扫描报告 - **多租户支持**:企业级数据隔离 - **通知系统**:邮件、Webhook 通知(预留) ## 技术栈 | 层级 | 技术 | 版本 | |------|------|------| | 后端框架 | FastAPI | 0.111.0 | | ORM/迁移 | SQLAlchemy + Alembic | 2.0.30 / 1.13.1 | | 任务执行 | Python threading | 后台线程 | | 前端框架 | Vue.js 3 + TypeScript | 3.4.x | | 构建工具 | Vite | 5.x | | UI 组件库 | Element Plus | 2.4.x | | 数据库 | MySQL | 8.0+ | | 扫描引擎 | Semgrep | 1.x | ## 环境要求 - **Python**: 3.10+ - **Node.js**: 18+(仅开发前端时需要) - **MySQL**: 8.0+ - **Git**: 用于代码拉取 - **Semgrep**: 扫描引擎(可选,首次扫描时自动安装) ## 项目结构 ``` security_testing_platform/ ├── backend/ # FastAPI 后端 │ ├── app/ │ │ ├── api/v1/ # API 路由层(认证、项目、扫描任务、漏洞、报告等) │ │ ├── core/ # 核心配置(Config、Security、日志等) │ │ ├── db/ # 数据库连接和 SQLAlchemy 模型基类 │ │ ├── models/ # SQLAlchemy 数据模型(User、Project、ScanTask 等) │ │ ├── schemas/ # Pydantic 数据校验和响应模型 │ │ ├── services/ # 业务逻辑服务(扫描器、Git 服务、扫描执行器等) │ │ └── static/ # 前端构建产物(由 Vite 自动生成) │ ├── alembic/ # 数据库迁移脚本目录 │ │ └── env.py # Alembic 迁移环境配置 │ ├── data/ # 运行时数据(扫描报告、日志等) │ ├── projects/ # 克隆的项目代码仓库 │ ├── requirements.txt # Python 依赖 │ └── tests/ # 后端测试 ├── frontend/ # Vue 3 前端(开发源码) │ ├── src/ │ │ ├── api/ # API 请求封装(axios) │ │ ├── router/ # Vue Router 路由配置 │ │ ├── stores/ # Pinia 状态管理(auth 等) │ │ ├── views/ # 页面视图组件 │ │ └── assets/ # 静态资源(样式等) │ ├── package.json # npm 依赖配置 │ ├── tsconfig.json # TypeScript 配置 │ ├── vite.config.ts # Vite 构建配置 │ └── index.html # 入口 HTML └── README.md ``` ### 目录说明 | 目录 | 说明 | |------|------| | `backend/app/api/v1/` | RESTful API 接口,按模块划分(auth, projects, scan_tasks, vulnerabilities, reports 等) | | `backend/app/models/` | SQLAlchemy ORM 模型,定义数据库表结构 | | `backend/app/schemas/` | Pydantic Schema,用于请求参数校验和响应序列化 | | `backend/app/services/` | 业务逻辑层,封装扫描器、Git 操作、报告生成等核心功能 | | `backend/app/static/` | **前端构建产物**,Vite 构建后自动输出,由 FastAPI 托管 | | `backend/alembic/` | 数据库迁移工具配置,支持自动生成和执行迁移脚本 | | `backend/data/` | 运行时数据目录,存放扫描报告、原始结果等 | | `backend/projects/` | 克隆的 Git 项目代码仓库(自动拉取) | | `frontend/src/views/` | 前端页面组件(Dashboard、Projects、ScanReports、Vulnerabilities 等) | | `frontend/src/api/` | 封装后端 API 调用(projects.ts、scan_tasks.ts 等) | ## 部署方式 ### 方式一:快速启动(推荐) > 克隆代码后,前端构建产物已包含在 `backend/app/static/` 中,无需额外构建。 ```bash # 1. 克隆代码 git clone cd security_testing_platform # 2. 配置后端环境 cd backend cp .env.example .env # 编辑 .env,配置数据库连接信息 # 3. 创建虚拟环境并安装依赖 python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # Linux/macOS pip install -r requirements.txt # 4. 初始化数据库 alembic upgrade head # 5. 启动服务 uvicorn app.main:app --host 0.0.0.0 --port 8000 ``` 访问 http://localhost:8000 即可使用。 ### 方式二:开发模式 ```bash # 后端(端口 8000) cd backend python -m venv venv venv\Scripts\activate pip install -r requirements.txt uvicorn app.main:app --reload --port 8000 # 前端(端口 3000,新终端) cd frontend npm install npm run dev ``` 前端开发服务器运行在 http://localhost:3000,后端 API 在 http://localhost:8000。 ### 前端构建 ```bash cd frontend npm run build ``` 构建产物输出到 `backend/app/static/`,FastAPI 会自动托管这些静态文件。 ## 使用方法 ### 首次使用 1. 访问 http://localhost:8000 2. 默认账号:`admin` / `admin123` 3. 登录后进入 Dashboard ### 主要功能流程 1. **创建项目**:项目管理 → 创建项目,填写 Git 仓库地址 2. **拉取代码**:项目会自动拉取代码,状态变为"已就绪" 3. **创建扫描任务**:扫描与报告 → 创建扫描任务,选择项目和扫描工具 4. **查看漏洞**:扫描完成后,进入漏洞管理查看发现的漏洞 5. **下载报告**:扫描与报告 → 报告中心,下载 JSON/HTML 报告 ## 数据库迁移 ```bash cd backend # 自动生成迁移脚本 alembic revision --autogenerate -m "描述信息" # 执行迁移 alembic upgrade head # 回滚到上一个版本 alembic downgrade -1 ``` ## API 文档 启动后端后,可访问以下地址查看自动生成的 API 文档: - **Swagger UI**: http://localhost:8000/docs - **ReDoc**: http://localhost:8000/redoc ## 健康检查 ```bash curl http://localhost:8000/health ``` ## 注意事项 - 本项目由 **AI 辅助开发**,代码可能存在不足,欢迎提交 Issue 和 PR - 生产环境部署时,请修改 `.env` 中的密钥和数据库密码 - 扫描任务使用 Python threading 后台执行,重启服务会中断正在进行的扫描 - 克隆的项目代码存放在 `backend/projects/` 目录下 ## 许可证 MIT License