用途
Security Headers Configuration 是一个用于配置 HTTP 安全响应头的技能,目标是防御常见的基于浏览器的攻击,例如 XSS、点击劫持(clickjacking)和 MIME 嗅探攻击。它适合在加固 Web 应用、准备通过安全审计等场景中使用。
主要能力
该技能围绕一组核心 HTTP 安全响应头展开,资料中列出的关键头及其用途与推荐值如下:
- HSTS:强制使用 HTTPS,推荐值
max-age=31536000; includeSubDomains - CSP:限制资源加载,推荐起点
default-src 'self' - X-Frame-Options:防止点击劫持,推荐值
DENY - X-Content-Type-Options:防止 MIME 嗅探,推荐值
nosniff
此外,Nginx 配置示例中还涉及 Referrer-Policy、Permissions-Policy 和 X-XSS-Protection 等响应头。
使用方式
Express 实现
资料提供了基于 Helmet 的 Express 实现示例:
const helmet = require('helmet');
app.use(helmet());
// Custom CSP
app.use(helmet.contentSecurityPolicy({
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-inline'"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", "data:", "https:"],
connectSrc: ["'self'", "https://api.example.com"],
fontSrc: ["'self'", "https://fonts.gstatic.com"],
frameAncestors: ["'none'"]
}
}));
Nginx 配置
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'" always;
验证工具
资料建议使用以下工具进行验证:
- Security Headers
- Mozilla Observatory
- CSP Evaluator
安全检查清单
- HSTS 已启用且 max-age 足够长
- CSP 已配置并经过测试
- X-Frame-Options 设置为 DENY
- X-Content-Type-Options 设置为 nosniff
- Referrer-Policy 已配置
- Permissions-Policy 禁用了未使用的功能
其他实现
资料提到可参考 references/python-apache.md,其中包含:
- Python Flask 安全响应头中间件
- Flask-Talisman 库配置
- Apache .htaccess 配置
- 响应头测试脚本
适用场景
适用于需要加固 Web 应用安全、通过安全审计、防御 XSS / 点击劫持 / MIME 嗅探等浏览器端攻击的开发与运维场景,覆盖 Express、Nginx、Python Flask、Apache 等常见技术栈。
限制与常见错误
资料列出的常见错误包括:
- 长期将 CSP 设置为 report-only 模式
- 使用过于宽松的策略
- 修改后忘记测试
- HSTS 未包含所有子域名
关于该技能的收费、价格、平台支持范围等具体信息,资料中暂未提供。