指南

如何修复缺失的HTTP安全响应头 (CSP, HSTS)

缺失关键安全响应头会使Web应用面临跨站脚本攻击 (XSS)、点击劫持、协议降级以及会话凭据泄漏等严重风险。彻底修复需要在服务器底层配置完备的防御指令。

核心解答

部署有效期至少为一年并开启preload的Strict-Transport-Security,配置限制严格的Content-Security-Policy,启用X-Content-Type-Options: nosniff并设置frame-ancestors 'none'。

排查与诊断缺失的HTTP响应头

在调整服务器配置之前,建议使用 curl -IL 命令行工具或自动化响应头检测器评估当前站点的基线响应。明确由源站服务器(如Nginx、Apache)、反向代理还是CDN边缘节点负责TLS握手和响应头写入。同时确认上游代理网络层未剥离安全头,后端中间件也未覆盖相关指令。

安全实施Strict-Transport-Security (HSTS)

HSTS强制客户端浏览器始终通过安全的HTTPS通道发起连接,有效杜绝中间人劫持与SSL剥离攻击。初期可在测试环境中设置 max-age=86400(一天)。确认所有子域名、静态资源和API均完全支持HTTPS后,再提升至生产级别:max-age=31536000; includeSubDomains; preload。切勿在生产环境中使用 max-age=0,这会导致安全策略即刻失效。

构建严格的内容安全策略 (CSP)

CSP用于明确限定浏览器在执行脚本和加载外部资源时的合法来源。建议首先部署 Content-Security-Policy-Report-Only 响应头配合 report-to 端点,在不中断业务的前提下全面监控潜在违规。将默认源限制为 default-src 'self',使用一次性随机数 (nonce) 或 SHA-256 哈希替代 'unsafe-inline',彻底禁用 object-src 'none' 并锁定 frame-ancestors 'none'。

防御点击劫持、MIME嗅探及引用来源泄漏

通过在CSP中声明 frame-ancestors 'none',同时配置备用头 X-Frame-Options: DENY,防止恶意第三方将您的站点嵌入不可见的隐藏iframe中实施界面劫持。配置 X-Content-Type-Options: nosniff 禁止浏览器自行探测可执行MIME类型。借助 Referrer-Policy: strict-origin-when-cross-origin 避免在外部跳转时泄漏敏感URL参数。

Web服务器配置部署与线上校验

在Nginx服务器中,应在HTTPS的server配置块中使用带 always 参数的 add_header 指令(例如:add_header X-Content-Type-Options "nosniff" always;),确保在4xx和5xx异常响应状态下依然下发安全头。在Apache中利用 mod_headers 模块的 Header always set 指令。通过 nginx -t 校验配置语法并重载服务,最后进行完整扫描验证。

安全响应头: HTTPS、CSP、防点击劫持、MIME嗅探、Referrer与浏览器隔离控制。

开始免费审计 →

常见问题

常见技术问题解答

是否可以在生产环境立即启用 HSTS preload?

不能。请先配置 Strict-Transport-Security: max-age=86400(一天)进行灰度测试,确认所有子域名与API均正常支持HTTPS后,再以 max-age=31536000 提交至 hstspreload.org 预加载列表。

如何在不破坏外部统计和脚本的前提下部署 Content Security Policy?

应首先启用 Content-Security-Policy-Report-Only 响应头收集违规报告,梳理必要的外链域名,并对内联脚本采用 nonce 随机数或 SHA-256 哈希,验证无误后再开启强制阻断模式。