nganthao240101/Hybrid-Rule-ML-System-for-Multi-Class-SQL-Injection-Detection
GitHub: nganthao240101/Hybrid-Rule-ML-System-for-Multi-Class-SQL-Injection-Detection
基于一致性置信度路由的混合 SQL 注入五分类检测系统,结合可解释规则与 Random Forest 以兼顾准确率和鲁棒性。
Stars: 0 | Forks: 0
# 混合 v4:基于一致性置信度路由的 SQL 注入检测
一个基于置信度的 5 类 SQL 注入检测混合系统,结合了**可解释规则检测器**(RobustRuleDetector v4)和在 TF-IDF 字符 n-grams 上训练的 **Random Forest**。
## 快速开始
### 1. 设置(一次性)
**Windows(CMD 或 PowerShell):**
```
setup.bat
```
**Linux/Mac/Git Bash:**
```
bash setup.sh
```
这将创建一个虚拟环境 `bert_env/` 并从 `requirements.txt` 安装依赖项。
### 2. 激活环境
**Windows 上的 Git Bash:**
```
source bert_env/Scripts/activate
```
**Linux/Mac:**
```
source bert_env/bin/activate
```
### 3. 运行完整 pipeline(28 个单元,约 7 分钟)
```
python CODE/pipeline_notebook.py
```
### 4. 运行特定单元
```
python CODE/pipeline_notebook.py 4 # EDA figures
python CODE/pipeline_notebook.py 12 # Hybrid v4 inference
python CODE/pipeline_notebook.py 24 # Final paper figures
python CODE/pipeline_notebook.py 27 # Baseline comparison table
```
## 功能说明
该 pipeline 执行 28 个连续单元:
| 单元 | 用途 |
|---|---|
| 01-05 | 设置,加载 SQLiV6,EDA,可视化,训练/测试集划分 |
| 06-09 | 基准测试:规则,Logistic Regression,SVM,Random Forest |
| 10-12 | 比较基准,规则 v4 测试,混合 v4 推理 |
| 13-17 | 交叉验证,对抗性测试,外部 OOD,多 DB,联合训练 |
| 18-20 | 对比图表,权衡分析,摘要表 |
| 21-25 | 保存产物,推理演示,v3v4 对比,结果图表,保存报告 |
| 26-28 | 混淆矩阵,基准表,整理图表 |
## 结果(5 次评估)
| 评估 | 规则 | RF | 混合 v4 |
|---|---|---|---|
| 交叉验证(5 折,26K) | 91.58% | 99.82% | 99.81% |
| 对抗性(60 条 WAF-bypass 查询) | 90.00% | 73.33% | 76.67% |
| 外部 OOD(4 个来源) | 92.57% | 77.73% | 81.88% |
| 多 DB(MySQL/PG/MSSQL/Oracle) | 88.68% | 62.26% | 64.15% |
| 联合训练(37K) | 92.51% | 99.81% | 99.79% |
**主要发现:**
- 对于此任务,Random Forest 的表现优于 BERT(99.77% 对 95.5%)
- 在 OOD 场景中,混合 v4 比纯 RF 提高了 1.9-4.1%
- 混合 v4 在保持可解释性的同时维持了 99.75% 的准确率
有关完整分析,请参阅 `REPORT_FINAL.md`。
## 项目结构
```
.
├── README.md
├── requirements.txt
├── setup.sh / setup.bat
├── REPORT_FINAL.md # Final paper report
├── PIPELINE.md # Detailed pipeline doc
│
├── DATASETS/
│ ├── SQLiV6.csv # Main dataset (26K, 5 classes)
│ ├── SQLiV7.csv # OOD test (8K)
│ ├── SQLiV8.csv # OOD test (12.5K)
│ ├── SQLiGEN_full.csv # Generator output
│ └── external/
│ ├── public_bench_test.csv # OWASP/sqlmap curated (67q)
│ └── external_test.csv # Sanity check (32q)
│
└── CODE/
├── 01-28 cells (or pipeline_notebook.py)
├── detector.py # Rule detector
├── detector_v3_softconf.py # Soft confidence v3
├── detector_v4_robust.py # RobustRuleDetector v4 (OOB/MSSQL/Oracle)
├── hybrid_v4_smart.py # Hybrid v4 main pipeline
├── cross_validation.py
├── adversarial_robustness.py
├── external_datasets_eval.py
├── multi_db_syntax.py
├── train_combined.py
├── visualize_data.py # EDA figures
├── visualize_results.py # Result figures
├── visualize_compare.py # Comparison figures
├── visualize_confusion.py # Confusion matrices
├── baseline_table.py # Baseline comparison
├── compare_with_baselines.py # vs LR/SVM/RF
├── full_benchmark.py # 4 baseline benchmark
├── baselines.py # LR/SVM/RF code
│
└── figures/ # All generated PNGs (25 files)
```
## 数据集
- **SQLiV6**(主要):26,335 条 SQL 查询,5 个类别(正常、恒真、联合、布尔盲注、基于时间)
- **SQLiV7/V8**:相同的生成器,不同的参数(分布外测试)
- **public_bench_test**:从 OWASP WebGoat、sqlmap、PortSwigger cheat sheets 精选而来
- **SQLiGEN_full**:我们的 `unified_generator.py` 工具的输出
## 硬件
- **仅 CPU**(不需要 GPU)
- 在 Windows 11,Python 3.10 上测试
- 内存:最低 4GB,推荐 8GB
- 磁盘:1GB 用于存放代码 + 数据 + 图表
## 许可证
本项目仅供学术/研究用途。数据集 SQLiV6 来源于公开资源(Kaggle、OWASP、sqlmap)。
标签:Apex, CISA项目, SQL注入检测, TF-IDF, 云计算, 机器学习, 规则引擎, 逆向工具, 随机森林