什么是 HTTP 安全头?
HTTP 安全头是 Web 服务器发送给浏览器的特殊 HTTP 响应头。它们指示浏览器如何保护用户免受跨站脚本 (XSS)、点击劫持和中间人攻击等常见 Web 攻击。
正确配置安全头是一种成本效益高的措施,可以用相对较少的工作量显著提高网站的安全性。IP 确认的安全评分功能可以让你检查所连接网站的安全头配置。
1. Content-Security-Policy (CSP)
CSP 是现代 Web 安全中最重要的头之一。它严格限制网页可以从哪些来源加载脚本、样式表和图片等资源。
CSP 防御的攻击
- 跨站脚本 (XSS):阻止恶意脚本的执行
- 数据注入攻击:阻止加载未授权的资源
- 点击劫持:通过 frame 和 iframe 控制提供防御
CSP 的运用
CSP 允许你按资源类型指定允许的来源。例如,你可以只允许来自自己网站的脚本,同时允许来自自己网站和 Google Fonts 的样式表。
使用 nonce (一次性令牌) 或 hash,你还可以安全地允许内联脚本。IP 确认在每个页面上都应用了带有 nonce 属性的 CSP。
2. Strict-Transport-Security (HSTS)
HSTS 防御的攻击
- SSL 剥离攻击:利用 HTTP 到 HTTPS 重定向的中间人攻击
- 协议降级攻击:试图强制使用未加密的 HTTP 连接
HSTS 的工作原理
浏览器收到 HSTS 头后,会在指定的持续时间 (max-age) 内自动将对该域名的所有访问转换为 HTTPS。添加 includeSubDomains 指令可将此扩展到子域名,通过 preload 指令注册到 HSTS 预加载列表可以从首次访问就强制使用 HTTPS。如需深入了解传输层安全,Web 应用安全书籍是有价值的参考资源。
3. X-Frame-Options
此头控制网页是否可以嵌入到 <iframe> 或 <frame> 中。其主要目的是防御点击劫持,一种覆盖透明 iframe 来诱骗用户执行非预期操作的攻击。
DENY:禁止所有嵌入SAMEORIGIN:仅允许同源嵌入
虽然 CSP 的 frame-ancestors 指令现在被推荐为更灵活的替代方案,但为了兼容旧版浏览器,建议同时设置 X-Frame-Options。如需全面了解这些头,HTTP 安全头参考书会有所帮助。
4. X-Content-Type-Options
此头阻止浏览器执行 MIME 类型嗅探,即忽略 Content-Type 头并猜测内容类型的行为。
- MIME 类型混淆攻击:防止诱骗浏览器将文本文件作为脚本执行的攻击
- 路过式下载:防止将恶意文件伪装成安全文件的攻击
唯一有效的值是 nosniff。这强制浏览器严格遵守 Content-Type 头中声明的 MIME 类型。
5. Referrer-Policy
此头控制页面导航时 Referer 头中包含多少信息。它防止嵌入在 URL 中的会话 ID 和搜索查询等敏感数据泄漏到外部网站。
no-referrer:完全不发送 Referer 头strict-origin-when-cross-origin:同源请求发送完整 URL,跨域请求仅发送源 (推荐)same-origin:仅对同源请求发送 Referer
如何检查安全头
- 使用 IP 确认的安全评分一目了然地查看关键安全头的状态
- 在浏览器开发者工具 (F12) 的 Network 标签中直接检查响应头
- 从命令行运行
curl -I https://example.com
总结
HTTP 安全头是加强网站安全的基础而强大的措施。CSP 和 HSTS 在现代 Web 安全中尤为不可或缺。网站运营者应正确配置这些头,用户应使用 IP 确认定期检查所访问网站的安全性。如需深入了解加密连接,请参阅我们关于 HTTPS 和 TLS 的指南。要了解浏览器级别的隐私保护,请查看我们关于浏览器指纹和 Cookie 追踪的文章。