|
1 | | -# FastAPI-SQLMap 扫描服务 |
| 1 | +# FastAPI-SQLMap 扫描任务管理系统项目说明 |
2 | 2 |
|
3 | | -基于FastAPI的分布式SQL注入扫描服务,整合SQLMap API和Celery任务队列,提供RESTful接口管理扫描任务。 |
| 3 | +## 项目概述 |
| 4 | +本项目是基于 FastAPI + Celery 构建的分布式 SQL 注入扫描任务管理系统(管理员端暂未实现。还没有加鉴权),主要实现以下核心功能: |
4 | 5 |
|
5 | | -## 技术栈 |
6 | | -- **Web框架**: FastAPI |
7 | | -- **任务队列**: Celery + RabbitMQ + Redis |
8 | | -- **数据库**: PostgreSQL(异步SQLAlchemy ORM) |
9 | | -- **包管理**: UV (Python 3.12) |
| 6 | +- 自动化调度 SQLMap 进行漏洞扫描 |
| 7 | +- 任务状态跟踪与结果可视化 |
| 8 | +- 扫描日志实时采集与分析 |
| 9 | +- 基于 Celery 的异步任务队列管理 |
10 | 10 |
|
11 | | -# SQLMAP |
12 | | -需要自备一个sqlmap的docker容器。以API模式启动 |
| 11 | +## 技术栈说明 |
| 12 | +| 组件 | 用途说明 | |
| 13 | +|-------------------|---------------------------------| |
| 14 | +| FastAPI | REST API 接口开发框架 | |
| 15 | +| Celery + Redis | 分布式任务队列与消息中间件 | |
| 16 | +| PostgreSQL | 扫描结果与任务日志存储 | |
| 17 | +| SQLAlchemy | 异步/同步 ORM 数据库操作 | |
| 18 | +| SQLMap API | 集成 SQLMap 扫描引擎 | |
| 19 | +| uv | 项目依赖管理工具 | |
| 20 | + |
| 21 | +## 项目目录结构 |
| 22 | +```text |
| 23 | +app/ |
| 24 | +├── apis/ # API 路由定义(Router) |
| 25 | +├── core/ # 核心业务逻辑与公共工具 |
| 26 | +├── database/ # 数据库连接与会话管理 |
| 27 | +├── middleware/ # 中间件配置(含 Celery、鉴权等) |
| 28 | +├── models/ # ORM 数据库模型 |
| 29 | +├── schema/ # Pydantic 数据校验模型 |
| 30 | +└── tasks/ # Celery 异步任务定义 |
| 31 | +``` |
| 32 | + |
| 33 | +## 核心模块说明 |
| 34 | + |
| 35 | +### 1. 任务调度中心 (tasks/) |
| 36 | +- `sqlmap_worker.py`:实现 Celery 任务队列管理 |
| 37 | +- `sqlmap_scheduler.py`:定时轮询任务状态 |
| 38 | +- 功能亮点: |
| 39 | + - 自动重试机制 |
| 40 | + - SQLMap 日志实时采集 |
| 41 | + - 扫描结果标准化处理 |
| 42 | + |
| 43 | +### 2. 数据库管理 (database/) |
| 44 | +- 双引擎配置: |
| 45 | + - 异步接口:`database.py` (FastAPI 使用) |
| 46 | + - 同步接口:`celery_sync_database.py` (Celery 使用) |
| 47 | + |
| 48 | + |
| 49 | +### 3. API 接口层 (apis/) |
| 50 | + |
| 51 | +## 典型 API 接口示例 |
| 52 | +| 端点 | 方法 | 功能说明 | |
| 53 | +|-----------------------------|--------|-----------------| |
| 54 | +| `/sqlmap/scan` | POST | 创建新的扫描任务| |
| 55 | +| `/sqlmap/tasks/{task_id}` | GET | 获取指定任务状态| |
| 56 | +| `/sqlmap/tasks/{task_id}/log`| GET | 获取任务执行日志| |
| 57 | + |
| 58 | +> 💡 提示:项目使用 `uv` 作为包管理工具,依赖安装命令为 `uv add [package-name]` |
0 commit comments