trustyourwebsite/security-headers
GitHub: trustyourwebsite/security-headers
零依赖的 Node.js 网站安全响应头审计工具,提供 A+ 到 F 评分并支持 CI/CD 自动化集成,帮助团队在部署阶段拦截不达标的 Header 配置。
Stars: 0 | Forks: 0
# @trustyourwebsite/security-headers
零依赖的 Node.js 工具,用于评估网站安全 headers(HSTS、CSP、X-Frame-Options 等),并提供 A+ 到 F 的评分。对 CI 友好,具有可配置的最低评级阈值。
由 [TrustYourWebsite](https://trustyourwebsite.com) 开发 —— 为欧盟小型企业提供自动化网站合规扫描。
## 快速开始
```
npx @trustyourwebsite/security-headers https://example.com
```
## 安装
```
# 全局安装
npm install -g @trustyourwebsite/security-headers
# 或者作为 dev dependency
npm install --save-dev @trustyourwebsite/security-headers
```
## 命令行用法
```
# 基本扫描
security-headers https://example.com
# JSON 输出
security-headers https://example.com --format json
# 将报告保存到文件
security-headers https://example.com --format json --output report.json
# CI 模式 — 如果等级低于 B 则失败
security-headers https://example.com --ci --min-grade B
# 所有选项
security-headers https://example.com \
--format table \
--follow-redirects \
--max-redirects 5 \
--timeout 10000 \
--user-agent "MyBot/1.0"
```
### 命令行选项
| 选项 | 默认值 | 描述 |
|--------|---------|-------------|
| `--format` | `table` | 输出格式:`json`、`text`、`table`、`csv` |
| `--follow-redirects` | `true` | 跟随 HTTP 重定向 |
| `--no-follow-redirects` | | 不跟随重定向 |
| `--max-redirects` | `5` | 最大重定向次数 |
| `--timeout` | `10000` | 请求超时时间(毫秒) |
| `--output` | | 将报告保存到文件 |
| `--ci` | | 如果评级低于阈值,则以退出码 1 退出 |
| `--min-grade` | `B` | CI 模式的最低评级 |
| `--user-agent` | | 自定义 User-Agent 字符串 |
## 库用法
```
import { checkHeaders } from '@trustyourwebsite/security-headers';
const result = await checkHeaders('https://example.com', {
followRedirects: true,
timeout: 10000,
});
console.log(result.grade); // 'A+' | 'A' | 'B' | 'C' | 'D' | 'F'
console.log(result.score); // 0-100
console.log(result.headers); // HeaderResult[]
```
## 输出示例
```
Security Headers Report
=======================
URL: https://example.com
Grade: B (72/100)
TLS: TLS 1.3
Headers:
✓ Strict-Transport-Security max-age=31536000; includeSubDomains
✗ Content-Security-Policy MISSING — Add CSP to prevent XSS attacks
✓ X-Content-Type-Options nosniff
✓ X-Frame-Options DENY
⚠ Referrer-Policy no-referrer-when-downgrade — Consider strict-origin-when-cross-origin
✗ Permissions-Policy MISSING — Restrict access to browser features
✓ X-XSS-Protection 0 (correctly disabled)
✗ Cross-Origin-Opener-Policy MISSING
Information Disclosure:
⚠ Server: nginx/1.24.0 — Remove version number
⚠ X-Powered-By: Express — Remove this header
Recommendations:
1. Add Content-Security-Policy header (HIGH priority)
2. Add Permissions-Policy header (MEDIUM priority)
3. Remove server version from Server header (LOW priority)
Full website compliance scan → https://trustyourwebsite.com
```
## 检查的 Headers
| Header | 权重 | 检查内容 |
|--------|--------|---------------|
| `Strict-Transport-Security` | 高 | max-age >= 1 年,includeSubDomains,preload |
| `Content-Security-Policy` | 高 | 危险值(unsafe-inline、unsafe-eval、通配符),指令 |
| `X-Content-Type-Options` | 中 | 必须为 `nosniff` |
| `X-Frame-Options` | 中 | DENY 或 SAMEORIGIN |
| `Referrer-Policy` | 中 | 尊重隐私的值 |
| `Permissions-Policy` | 中 | 限制危险功能 |
| `Cross-Origin-Opener-Policy` | 中 | 优先使用 same-origin |
| `Cross-Origin-Resource-Policy` | 低 | same-origin 或 same-site |
| `Cross-Origin-Embedder-Policy` | 低 | require-corp 实现隔离 |
| `Cache-Control` | 低 | 敏感页面使用 no-store 或 private |
| `X-XSS-Protection` | 低 | 已弃用 — 应为 `0` 或不存在 |
我们还会检查应该移除的**信息泄露** headers:
- `Server`(暴露软件版本)
- `X-Powered-By`(暴露框架)
- `X-AspNet-Version` / `X-AspNetMvc-Version`
## 评级系统
| 评级 | 分数 | 条件 |
|-------|-------|------------|
| A+ | 90-100 | 无任何失败项 |
| A | 80-89 | 无严重(高权重)失败项 |
| B | 65-79 | |
| C | 50-64 | |
| D | 35-49 | |
| F | 0-34 | |
## CI/CD 集成
### GitHub Actions
```
- name: Check security headers
run: npx @trustyourwebsite/security-headers https://your-site.com --ci --min-grade B
```
### GitLab CI
```
security-headers:
script:
- npx @trustyourwebsite/security-headers https://your-site.com --ci --min-grade B
```
## 设计决策
- **零运行时依赖。** 仅使用 Node.js 内置模块(`node:https`、`node:http`、`node:tls`、`node:fs`)。安全工具应具有最小的攻击面。
- **强大的 CSP 解析器。** 解析所有 CSP 指令,并标记带有具体修复建议的危险值。
- **CI 优先。** 带有退出码的 `--ci` 模式使其易于添加到任何流水线中。
## 要求
- Node.js 18+
## 相关项目
- [TrustYourWebsite](https://trustyourwebsite.com) — 为欧盟企业提供全面的网站合规扫描
- [@trustyourwebsite/dns-auth-check](https://github.com/trustyourwebsite/dns-auth-check) — SPF、DKIM、DMARC、BIMI 和 MTA-STS 邮件身份验证审计工具
- [@trustyourwebsite/cookie-consent-validator](https://github.com/trustyourwebsite/cookie-consent-validator) — 验证 Cookie 同意横幅是否真正在“全部拒绝”时停止跟踪
## 许可证
MIT
由 [TrustYourWebsite](https://trustyourwebsite.com) 开发 —— 我们通过自动化网站扫描帮助欧盟小型企业保持合规。[获取免费合规扫描](https://trustyourwebsite.com)。
标签:CSP, DevSecOps, GNU通用公共许可证, HSTS, HTTPS, HTTP安全头, Linux安全, MITM代理, Node.js, npx, SMB合规, X-Frame-Options, 上游代理, 二进制发布, 前端安全, 头部检测, 安全扫描, 安全标准, 安全评分, 开源工具, 时序注入, 暗色界面, 网站安全, 网络安全, 自动化攻击, 隐私保护, 零依赖