urvashimisal126-bot/WebSentinel
GitHub: urvashimisal126-bot/WebSentinel
WebSentinel 是一个利用图像哈希和 HTML 差异比对实现网页篡改实时检测并提供一键自动恢复的全栈安全监控平台。
Stars: 0 | Forks: 0
# 🛡️ WebSentinel — 实时网页篡改检测与自动化恢复系统
[](https://python.org)
[](https://flask.palletsprojects.com/)
[](https://playwright.dev/)
[](https://www.sqlite.org/)
[](LICENSE)
**WebSentinel** 是一个全栈网络安全监控应用程序,旨在实时检测网页篡改攻击、向管理员发送警报,并通过一键操作执行自动化基线回滚。
它将**感知图像差异对比(ImageHash + Pillow)**和**结构性 HTML 对比(`difflib`)**与通过 **Playwright** 获取的无头浏览器快照相结合,以持续审计 Web 应用程序的完整性。
## ✨ 核心功能
- 👁️ **7x24小时自动化完整性审计**:由 **APScheduler** 驱动的定时后台扫描,可按配置的时间间隔捕获 DOM 结构和可视截图。
- 🎨 **感知视觉差异与热力图**:通过计算图像哈希值之间的 Hamming 距离来检测视觉篡改(横幅、篡改图像、布局更改),并渲染交互式的**粉色差异热力图**。
- 🧬 **结构性 HTML 差异对比**:逐行 DOM 审计可突出显示注入的脚本、恶意标签、被删除的元素或被更改的内容。
- ⚡ **即时自动化恢复**:只需单击一下,即可直接从保存的结构基线将被篡改的目标应用程序恢复到干净的基线状态。
- 🧪 **内置模拟目标与篡改模拟器**:内置交互式模拟目标和 `simulate_attack.py` CLI 脚本,无需修改生产环境的 Web 服务器即可测试攻击场景。
- 📊 **事件管理与 PDF 报告**:跟踪安全事件时间线、状态变更,并使用 **ReportLab** 生成执行级别的 PDF 安全审计报告。
- 🌌 **深色赛博控制台 UI**:Darktrace 风格的玻璃拟态界面,具有动态的 canvas 粒子背景、发光的状态指示器和响应式分析小部件。
## 🏗️ 系统架构与工作流
```
┌────────────────┐ APScheduler ┌──────────────────┐
│ Target Website │ ◄───────────────────► │ Playwright Headless │
└───────┬────────┘ └────────┬─────────┘
│ │ Screenshot & DOM
│ ▼
┌───────▼────────┐ ┌──────────────────┐
│ Baseline Snapshot│ │ Diff Engine │
└───────┬────────┘ │ (Perceptual + DOM)│
│ └────────┬─────────┘
▼ │
┌─────────────────────────────────────────────────▼─────────┐
│ WebSentinel Control Console │
│ • Dashboard Alerts • Overlay Heatmap • 1-Click Restore │
└───────────────────────────────────────────────────────────┘
```
## 🛠️ 技术栈
| 层级 | 技术 |
| :--- | :--- |
| **后端框架** | Python 3.11+ / Flask 3.0.3 |
| **数据库与 ORM** | SQLite (WAL Mode) + SQLAlchemy 2.0 |
| **任务调度** | APScheduler (Advanced Python Scheduler) |
| **浏览器自动化** | Playwright (Headless Chromium) |
| **图像分析** | Pillow (PIL) + ImageHash (Perceptual Hashing) |
| **Diff 算法** | Python `difflib` + NumPy 数组操作 |
| **报告生成器** | ReportLab |
| **前端控制台** | HTML5, CSS3 Tokens (Glassmorphism), Vanilla JavaScript, Chart.js |
## 🚀 快速入门指南
### 前置条件
请确保您的系统已安装 **Python 3.11+**。
### 1. 克隆仓库并配置虚拟环境
```
git clone https://github.com/urvashimisal126-bot/WebSentinel.git
cd WebSentinel
# 创建并激活虚拟环境 (Windows)
python -m venv .venv
.venv\Scripts\activate
# 创建并激活虚拟环境 (Linux/macOS)
python3 -m venv .venv
source .venv/bin/activate
```
### 2. 安装依赖
```
pip install -r requirements.txt
python -m playwright install chromium
```
### 3. 运行服务器
```
python app.py
```
打开浏览器并导航至 **`http://localhost:5000`**。
## 🧪 演示:攻击与恢复演练
WebSentinel 包含内置的模拟目标,因此您可以开箱即用地演示实时攻击检测和恢复:
1. **注册目标站点**
- 点击导航栏中的 **Add Site**。
- 输入站点名称(例如:`Secure Financial Portal`)。
- 勾选 **Generate Local Mock Target (Defacement Demo)**。
- 点击 **Start Monitoring**。WebSentinel 会自动捕获干净的基线 HTML 和截图。
2. **检查基线**
- 验证状态是否显示为 **Safe**(绿色指示器)。
- 点击 **Details** 查看基线截图和 DOM 结构。
3. **模拟篡改攻击**
- 打开终端并使用您的 Site ID(默认为 `1`)运行攻击模拟器:
python simulate_attack.py 1
- 这会将篡改横幅(`"HACKED BY WebSentinel Demo 💀"`)注入到目标中。
4. **触发篡改检测**
- 在 WebSentinel Dashboard 中点击 **Scan Now**(或等待自动后台扫描)。
- 状态将立即转变为 **Defaced**,并伴有发红光的警告指示器。
- 查看 **Details** 并启用 **Overlay Diff Heatmap**,以直观地定位以粉色突出显示的篡改区域。
5. **一键自动化恢复**
- 点击 **Restore Site**。
- WebSentinel 会将目标的 DOM 恢复到经过验证的基线状态,并更新事件日志。
- 点击 **Scan Now** 确认目标站点返回到 **Safe** 状态。
6. **生成事件 PDF 报告**
- 导航至 **Incident Logs** 并点击 **Download PDF Report** 导出安全摘要报告。
## 📂 项目目录结构
```
WebSentinel/
├── app.py # Flask server routes, REST APIs, mock targets & report generation
├── models.py # SQLAlchemy database models (MonitoredSite, ScanResult, Incident)
├── database.py # DB connection management & WAL mode configuration
├── scheduler.py # APScheduler background periodic scanning tasks
├── screenshotter.py # Playwright async screenshot capture engine
├── diff.py # Image hash comparison, diff heatmaps & HTML text diffs
├── simulate_attack.py # CLI script for simulating defacement attacks
├── requirements.txt # Python package dependencies
├── README.md # Project documentation
├── static/ # Stylesheets, JS scripts, icons, canvas particles
├── templates/ # Jinja2 HTML templates for WebSentinel UI console
└── screenshots/ # Local storage for site baselines, live scans & diff heatmaps
```
## 📝 许可证
基于 MIT 许可证分发。详情请参阅 `LICENSE`。
## 👩💻 作者
**Urvashi**
*AITR Indore — CSE (AI/ML)*
*Fundamentals of Cybersecurity Project*
标签:Flask, Playwright, Web安全, 后端开发, 特征检测, 网页完整性监控, 网页防篡改, 自动化应急响应, 蓝队分析, 逆向工具