hetulpandya44/digi-save-waf
GitHub: hetulpandya44/digi-save-waf
基于 FastAPI 和 SQLite 的轻量级反向代理 WAF,在请求到达上游应用前检测并拦截十余种常见 Web 攻击,配备完整管理后台和演示靶场。
Stars: 0 | Forks: 0
# Digi Save WAF





## 作品集快照
- 项目类型:毕业设计级别的网络安全与全栈工程项目
- 核心理念:在易受攻击或生产环境的 Web 应用前部署 WAF 代理,并在请求到达真实服务器之前进行检测
- 主要技术栈:FastAPI, Python, SQLite, `httpx`, HTML/CSS/JS, Chart.js
- 安全重点:SQLi、XSS、命令注入、路径遍历、敏感文件访问、SSRF、XXE、SSTI、扫描器检测、IP ACL、速率限制和质询门控
- 演示模型:包含一个故意存在漏洞的本地目标应用,用于安全演示
## 为什么这个项目很重要
大多数学生的安全项目仅停留在检测或日志记录阶段。Digi Save WAF 则更进一步:
- 作为真实的反向代理运行
- 将干净流量转发到上游活跃应用
- 在恶意请求到达目标前将其拦截
- 记录攻击事件以便分析
- 为管理员提供功能完善的仪表板、规则面板、受保护站点管理和安全设置
这使其成为一个极具分量的作品集项目,因为它结合了:
- 网络安全概念
- 网络和反向代理设计
- 后端 API 工程
- 前端仪表板设计
- 身份验证与 MFA
- 基于数据库的配置和日志记录
## 核心特性
- 端口 `8085` 上的反向代理 WAF 引擎
- 端口 `8005` 上的管理服务器和后台 UI
- 基于 SQLite 的配置、用户、规则和攻击日志
- 涵盖 12 种攻击类型的模块化检测引擎
- 针对每个站点的保护设置和路由
- 速率限制和 IP 允许/拦截规则
- 本地 CAPTCHA、认证门控和动态质询流程
- 采用 JWT、bcrypt 和 TOTP MFA 的管理员身份验证
- 端口 `8090` 上的演示目标应用,用于安全的本地测试
## 威胁覆盖范围
| 攻击类型 | 覆盖范围 |
|---|---|
| SQL 注入 | 基于联合查询、布尔型、编码型以及可疑的查询模式 |
| 跨站脚本攻击 (XSS) | Script 标签、内联事件处理程序和载荷片段 |
| 命令注入 | Shell 分隔符、链式命令和危险命令模式 |
| 路径遍历 | `../`、编码遍历以及 Windows/Linux 路径滥用 |
| SSRF | 内部 IP、localhost 目标和元数据端点模式 |
| XXE | 实体声明和 XML 滥用指示符 |
| SSTI | 模板表达式载荷 |
| 扫描器检测 | `sqlmap`、`nikto`、`nmap` 以及类似工具的指纹 |
| 敏感文件访问 | `.env`、备份、配置文件导出以及暴露的文件 |
| CRLF / LDAP / XPath | 针对请求滥用的特定载荷签名 |
## 架构
```
flowchart LR
User["Client / Browser"]
Proxy["WAF Proxy Engine (:8085)"]
Controls["Rate Limiting / IP ACL / Gates"]
Detect["Detection Engine"]
Upstream["Protected Upstream App"]
Manager["Management Server (:8005)"]
UI["Admin UI"]
DB["SQLite"]
User --> Proxy
Proxy --> Controls
Controls --> Detect
Detect --> Upstream
Proxy --> DB
Manager --> DB
UI --> Manager
Proxy -. attack events .-> Manager
```
更多细节:[架构](docs/ARCHITECTURE.md)
## 请求生命周期
```
sequenceDiagram
participant C as Client
participant W as WAF Proxy
participant S as SQLite
participant D as Detection Engine
participant U as Upstream App
participant M as Management API
C->>W: HTTP request
W->>S: Load site config / policy / ACL
W->>W: Rate limit + IP ACL + optional challenge gates
W->>D: Inspect path, query, headers, body
alt Attack detected
D-->>W: Block decision
W->>S: Save detect_log
W->>M: Push dashboard event
W-->>C: 403 block page
else Clean request
D-->>W: Safe
W->>U: Forward request
U-->>W: Response
W-->>C: Response
end
```
## 公开仓库说明
在此公开仓库版本中,特意移除了视觉展示相关的素材。代码、架构、安装流程、演示指南和验证结果均被保留。
## 验证结果
当前针对此作品集构建的本地验证包括:
- 检测套件通过率:`39/39`
- 直接访问 `8090` 端口上的易受攻击演示目标
- 访问 `8085` 端口上的干净 WAF 路由
- SQL 注入被拦截并返回 `403`
- XSS 被拦截并返回 `403`
- 敏感文件访问被拦截并返回 `403`
详细证据:[结果与验证](docs/RESULTS.md)
## 技术栈
| 层级 | 技术 | 用途 |
|---|---|---|
| 后端 | Python, FastAPI | 管理 API 和反向代理服务 |
| 代理 | `httpx`, `StreamingResponse` | 将请求转发到上游应用 |
| 检测 | 自定义 Python 模块 | 攻击检测与响应决策 |
| 前端 | HTML, CSS, JavaScript | 管理仪表板和设置 UI |
| 图表 | Chart.js | 仪表板可视化 |
| 认证 | JWT, bcrypt, `pyotp`, `qrcode` | 登录、MFA、凭证保护 |
| 数据库 | SQLite | 用户、站点、策略、日志、统计数据 |
| 后台任务 | APScheduler | 清理和周期性任务 |
## 快速开始
### 1. 安装依赖
```
pip install -r requirements.txt
```
### 2. 启动管理服务器
```
cd backend
python main.py
```
这将启动:
- 管理 UI:`http://localhost:8005`
- WAF 代理:`http://localhost:8085`
### 3. 启动演示目标
```
cd demo_target
python app.py
```
这将在以下地址启动故意存在漏洞的示例站点:
- `http://127.0.0.1:8090`
### 4. 默认管理员登录
| 用户名 | 密码 |
|---|---|
| `admin` | `admin123` |
在长期使用前,请从 `Settings -> Security` 中更改这些信息。
## 安全演示流程
1. 直接在 `http://127.0.0.1:8090` 打开易受攻击的演示应用
2. 在 `http://localhost:8085` 打开受保护的路由
3. 直接针对 `8090` 触发演示攻击
4. 通过 `8085` 触发相同的攻击
5. 打开 `http://localhost:8005/logs` 查看被拦截的事件
完整演练:[演示指南](docs/DEMO.md)
## 仓库布局
```
digi-save-waf/
├── backend/ # FastAPI management server and WAF engine
├── demo_target/ # Intentionally vulnerable app for safe testing
├── frontend/ # Static admin UI
├── docs/ # Architecture, setup, results, and project notes
├── Dockerfile
├── compose.yaml
├── requirements.txt
└── README.md
```
## 文档地图
- [架构](docs/ARCHITECTURE.md)
- [安装指南](docs/SETUP.md)
- [演示指南](docs/DEMO.md)
- [结果与验证](docs/RESULTS.md)
- [案例研究](docs/CASE_STUDY.md)
- [路线图](docs/ROADMAP.md)
- [截图库](docs/SCREENSHOTS.md)
- [学术文档包](docs/academic/README.md)
- [安全政策](SECURITY.md)
- [行为准则](CODE_OF_CONDUCT.md)
## 安全须知
`demo_target` 应用是故意设计为存在漏洞的,仅用于本地测试、课堂演示和经授权的研究。请勿将其公开部署。
## 鸣谢
本仓库作为 Digi Save WAF 的作品集就绪学术项目发布。
更多细节:[鸣谢](ACKNOWLEDGEMENTS.md)
标签:AMSI绕过, AppImage, AV绕过, Chart.js, CISA项目, FastAPI, httpx, IP 地址批量处理, IP访问控制, MFA, Python, SQLite, SQL注入防御, SSRF防御, SSTI防御, WAF, Web安全, Web应用防火墙, XSS防御, XXE防御, 人机验证, 前端仪表盘, 反向代理, 后端工程, 命令注入防御, 多因素认证, 威胁检测, 安全运营, 安全防护, 安全项目, 扫描框架, 攻击拦截, 敏感文件访问控制, 无后门, 漏洞防御, 网络安全, 网络安全毕业设计, 蓝队分析, 请求拦截, 路径遍历防御, 运行时操纵, 逆向工具, 隐私保护