anshikasajwan/Vulnerability-Scanner-Mini-Project-
GitHub: anshikasajwan/Vulnerability-Scanner-Mini-Project-
一款基于 Python 的 Web 安全配置检查工具,通过双界面审计 HTTPS、HTTP 安全标头及 SSL 证书状态,帮助用户发现防御性配置缺陷并生成风险报告。
Stars: 0 | Forks: 0
# 🔍漏洞扫描器
## 📌 项目概述
**Vulnerability-Scanner** 是一款基于 Python 的网络安全工具,用于评估 Web 应用程序的被动安全态势。它同时提供了**交互式 Streamlit Web 仪表板**和**命令行工具**,可检查目标网站是否通过 HTTPS 实施安全通信,评估关键的 HTTP 安全标头,并验证 SSL/TLS 证书的有效性和过期时间。
通过分析防御性标头和传输安全性,该工具可帮助开发者和安全爱好者了解常见的 Web 漏洞(如 Clickjacking、MIME-sniffing 和 Cross-Site Scripting),并实施安全的服务器配置。
## 🎯 目标
* 验证通过 **HTTPS** 的安全通信。
* 评估基本 **HTTP Security Headers** 的实施情况。
* 检查 **SSL/TLS 证书**的颁发者详情和过期时间。
* 根据配置缺陷计算整体**风险等级**。
* 同时提供**可视化 Web 仪表板**和**CLI 界面**。
* 导出清晰、可下载的**漏洞评估报告**。
* 获取**Web 安全工程**和**防御性配置**的实践经验。
## ✨ 功能
* 🌐 **双界面:** 可在交互式 **Streamlit Web 仪表板**或轻量级**命令行界面 (CLI)** 之间进行选择。
* ✅ **HTTPS 验证:** 检测未加密的 HTTP 回退或弱重定向。
* ✅ **安全标头审计:** 检查是否存在关键安全控制:
* `Strict-Transport-Security` (HSTS)
* `Content-Security-Policy` (CSP)
* `X-Frame-Options`
* `X-Content-Type-Options`
* `Referrer-Policy`
* `Permissions-Policy`
* ✅ **SSL/TLS 检查:** 提取证书颁发者详情并计算距离过期的剩余天数。
* ✅ **服务器信息暴露检查:** 识别服务器标头是否泄露了软件详情。
* ✅ **自动化风险评分:** 分配风险等级(`Minimal`、`Low`、`Medium`、`High`)。
* ✅ **报告导出:** 通过 UI 直接下载结构化的安全评估报告,或在 CLI 模式下将其保存到磁盘中。
## 🛠 使用的技术
* **Python 3.x**
* **Streamlit** – 用于交互式 UI 指标、选项卡和布局的 Web 应用程序框架。
* **`requests`** – 处理 HTTP/HTTPS 通信和标头提取。
* **`ssl` & `socket`** – 用于检查 TLS 证书的标准库模块。
* **`urllib.parse`** – 清理和解析主机名/URL。
* **`datetime`** – 计算证书过期倒计时。
## 📂 项目结构
```
WebSecurityAnalyzer/
│
├── app.py # Interactive Streamlit Web Application
├── main.py # Command-Line Interface (CLI) entry point
├── scanner.py # Core logic for HTTPS, headers, SSL, and risk scoring
├── report.py # Report generation and formatting utilities
├── utils.py # URL normalization and helper functions
├── requirements.txt # Project dependencies
└── README.md # Project documentation
```
## ⚙️ 工作原理
```
User Inputs URL (CLI or Streamlit UI)
│
▼
Validate & Normalize URL (utils.py)
│
▼
Retrieve Response & Inspect Headers (scanner.py)
│
▼
Establish TLS Socket & Inspect Certificate (scanner.py)
│
▼
Calculate Risk Score & Actionable Recommendations (scanner.py)
│
▼
Render Visual Metrics (app.py) OR Terminal Output (main.py)
│
▼
Export Assessment Report (.txt)
```
## 📊 示例输出
### 1. Streamlit Web 界面 (`app.py`)
* **关键指标行:** 用于显示 HTTPS 状态、缺失标头数量、SSL 剩余天数和整体风险徽章的即时视觉指示器。
* **有组织的选项卡:** 采用选项卡式分类,涵盖 HTTP 安全标头、SSL 证书详情以及带有“一键下载”按钮的原始漏洞报告。
### 2. 命令行报告输出 (`main.py`)
```
=============================================
WEB SECURITY ASSESSMENT REPORT
=============================================
Generated: 2026-07-29 12:30:00
Target: [https://example.com](https://example.com)
Server: nginx/1.18.0
---------------------------------------------
HTTPS SUPPORT:
Status: PASS
---------------------------------------------
SECURITY HEADERS:
✓ Strict-Transport-Security (Present)
✗ Content-Security-Policy (Missing)
✓ X-Frame-Options (Present)
✗ X-Content-Type-Options (Missing)
✓ Referrer-Policy (Present)
✗ Permissions-Policy (Missing)
---------------------------------------------
SSL CERTIFICATE DETAILS:
Issuer: Let's Encrypt
Expires: 2026-09-15 (48 days remaining)
---------------------------------------------
OVERALL RISK LEVEL: MEDIUM
---------------------------------------------
RECOMMENDATIONS:
• Configure the 'Content-Security-Policy' header to strengthen web security posture.
• Configure the 'X-Content-Type-Options' header to strengthen web security posture.
• Configure the 'Permissions-Policy' header to strengthen web security posture.
=============================================
```
## 📚 学习到的安全概念
* **传输层安全性 (TLS):** 传输中的加密如何防止窃听和篡改。
* **HTTP 安全控制:**
* **HSTS:** 通过强制仅使用 HTTPS 连接来缓解 SSL 剥离攻击。
* **CSP:** 防止 Cross-Site Scripting (XSS) 和数据注入攻击。
* **X-Frame-Options:** 保护用户免受 Clickjacking 攻击。
* **X-Content-Type-Options:** 防止 MIME-sniffing 漏洞。
* **模块化软件工程:** 分离业务逻辑 (`scanner.py`)、报告生成 (`report.py`) 和用户界面 (`app.py` / `main.py`)。
## 🚀 未来增强功能
* 📄 **PDF 导出:** 使用 `ReportLab` 生成带有图表的可下载 PDF 报告。
* ⚡ **异步扫描:** 使用 `aiohttp` 同时扫描多个域名的 endpoint。
* 🛡️ **子域名发现:** 通过 Certificate Transparency 日志 进行被动枚举。
## ▶️ 安装与运行应用
1. **克隆仓库:**
```
git clone https://github.com/anshikasajwan/Vulnerability-Scanner-Mini-Project-
cd Vulnerability-Scanner-Mini-Project-
```
2. **安装依赖项:**
```
pip install -r requirements.txt
```
3. **通过 Streamlit Web 仪表板运行:**
```
streamlit run app.py
```
4. **通过命令行界面 (CLI) 运行:**
```
python main.py
```
## 📜 许可证与道德规范使用
本项目仅出于**教育和实习目的**开发。它依赖于公开暴露的标准 HTTP 响应和证书数据来评估 Web 安全配置。
```
```
标签:DInvoke, Kubernetes, Python, Streamlit, Web安全, 加密, 插件系统, 无后门, 漏洞扫描器, 网络安全, 蓝队分析, 访问控制, 逆向工具, 隐私保护