antwnakys/header-check

GitHub: antwnakys/header-check

一款纯 Python 标准库实现的 HTTP 安全响应头分析与评分工具,检测并报告站点缺失或不当的安全头配置。

Stars: 0 | Forks: 0

# 🛡️ header-check ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white) ![测试](https://img.shields.io/badge/tests-19%20passing-brightgreen?style=flat) ![许可证](https://img.shields.io/badge/license-MIT-green?style=flat) ![依赖](https://img.shields.io/badge/dependencies-stdlib%20only-lightgrey?style=flat) 一款 **HTTP security-headers 分析器**。它会获取网站的响应头, 评估网站的自我防御能力(抵御 XSS、clickjacking、协议降级、MIME sniffing 等),并明确告诉你需要修复的内容 —— 最终给出一个从 **A 到 F** 的字母评分。 ``` Security headers report — https://example.com HTTP 200 -------------------------------------------------------- ✗ Strict-Transport-Security Not set — the browser may be downgraded to HTTP. → Add: Strict-Transport-Security: max-age=31536000; includeSubDomains ✗ Content-Security-Policy Not set — no policy limiting where scripts/resources can load from. → Define a policy, e.g. default-src 'self'; object-src 'none'. ✓ X-Content-Type-Options Set to nosniff. -------------------------------------------------------- Grade: D (35/90 points, 39%) ``` ## 为什么 HTTP security headers 至关重要 Web 服务器可以指示浏览器执行重要的保护措施 —— 但前提是它必须*发送正确的 headers*。缺少这些 headers 是最常见(也是最容易修复)的 Web 漏洞之一。此工具会检查其中最重要的几项: | Header | 防御目标 | | --- | --- | | **Content-Security-Policy** | 跨站脚本攻击 (XSS) —— 最严重的一项 | | **Strict-Transport-Security** | 协议降级 / SSL 剥离 | | **X-Frame-Options** / CSP `frame-ancestors` | Clickjacking | | **X-Content-Type-Options** | MIME-type sniffing 攻击 | | **Referrer-Policy** | 向第三方泄露 URL | | **Permissions-Policy** | 滥用摄像头、麦克风、地理位置等 | 它还会标记 **信息泄露** —— 例如 `Server` 或 `X-Powered-By` header 暴露了确切的软件版本,从而为攻击者提供了指纹。 每一项检查都有评分;总分会映射到一个等级,方便你随时追踪改进情况。 ## 用法 ``` # 分析网站(如果省略,则默认为 https://): python -m headercheck example.com # 完整 URL 和较短的超时时间: python -m headercheck https://mysite.com --timeout 5 ``` 当评级为 **D 或 F 时,该工具会以非零状态退出**,因此你可以将其接入 CI 中,一旦部署导致 security headers 倒退,就会让构建失败: ``` python -m headercheck https://staging.mysite.com || echo "Headers regressed!" ``` ## 构建方式 三个清晰的分层让逻辑易于测试和扩展: - **`checks.py`** —— 每个 header 对应一个函数,每个函数都阐明了*该 header 为何重要*以及*如何评估其值*(强 / 弱 / 缺失)。 - **`analyze.py`** —— 获取 headers(已隔离,以便在离线状态下测试评分)并运行所有检查,然后计算分数和评级。 - **`cli.py`** —— 命令行界面和彩色报告。 添加新的 header 检查只需在 `checks.py` 中添加一个新函数,并在 `evaluate()` 中添加一行代码即可。 ## 无外部依赖 该分析器仅使用 Python 标准库 (`urllib`)。仅在运行测试时才需要 `pytest`。 ## 运行测试 ``` pip install pytest pytest ``` 测试套件**完全离线运行** —— 每一项检查和评分逻辑都是针对 header 字典进行测试的,不会发起真实的网络请求。 ## 项目结构 ``` header-check/ ├── headercheck/ │ ├── checks.py # per-header evaluation + scoring │ ├── analyze.py # fetch headers, run checks, compute grade │ └── cli.py # command-line interface + report └── tests/ # pytest suite (network-free) ``` ## 注意事项 - 仅对单个响应的 headers 进行评级;它不会爬取整个网站。 - 评分机制带有一定主观性但完全透明 —— 你可以在 `checks.py` 中调整分值,以符合你自己的策略。 - 请仅分析你拥有或已获授权测试的站点。 ## 许可证 [MIT](LICENSE) — 可免费使用、学习并在此基础上进行构建。
标签:HTTP安全头分析, LNA, Python, Web安全, 安全规则引擎, 无后门, 蓝队分析, 逆向工具