提升Nginx安全性:关键HTTP响应头配置指南
在面对如德勤等专业机构的渗透测试时,合理配置HTTP安全响应头是增强Web应用防护能力的重要手段。以下是若干核心安全头及其优化配置建议。
1. 强制HTTPS传输(HSTS)
用于告知浏览器只能通过HTTPS方式访问当前站点,防范协议降级攻击。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
- max-age=31536000: 设置策略缓存时间为一年。
- includeSubDomains: 将规则应用于所有子域名。
- preload: 可提交至浏览器预加载列表,进一步杜绝首次访问风险。
2. 内容安全策略(CSP)
CSP用来限定网页中各类资源的合法来源,抵御XSS及数据注入类攻击。
add_header Content-Security-Policy "default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self';" always;
- default-src 'none': 默认不允许加载任何外部资源。
- script-src 'self': 脚本必须来自同源地址。
- style-src 'self': 样式文件限于本地加载。
- img-src 'self' data:: 图片可来源于本地或内联Base64编码。
- font-src 'self': 字体文件仅从本域获取。
- object-src 'none': 禁止加载插件对象(Flash等)。
- frame-ancestors 'none': 禁止被其他页面以iframe形式嵌套。
- base-uri 'self': 控制<base>标签所使用的基准URI。
- form-action 'self': 表单提交操作限制在自身域。
注意:若项目依赖CDN或其他第三方服务,需显式添加白名单源,例如:
script-src 'self' https://cdn.example.org; style-src 'self' https://fonts.googleapis.com;
3. 禁止MIME类型嗅探
防止浏览器基于内容自动判断MIME类型导致的安全问题。
add_header X-Content-Type-Options "nosniff" always;
- nosniff: 明确要求浏览器严格按照服务器返回的Content-Type解析资源。
4. XSS过滤器开关
激活浏览器内置的XSS检测机制并阻止可疑请求。
add_header X-XSS-Protection "1; mode=block" always;
- 1: 启用XSS过滤功能。
- mode=block: 若发现潜在攻击行为,则中断整个页面渲染过程。
提示:现代主流浏览器已逐步弃用该字段,推荐优先采用CSP作为替代防御措施。
额外安全增强项(按需启用)
引用来源控制(Referrer Policy)
规范链接跳转过程中Referer头信息的传递范围。
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
权限策略管理(Permissions Policy)
精细化控制对敏感设备接口(如摄像头、麦克风)的调用权限。
add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always;
验证配置是否生效的方法
- 利用在线工具进行扫描分析:
- 使用命令行工具查看HTTP响应头:
curl -I https://yourdomain.com