安全HTTP头检查网站保护的HTTP响应头

安全HTTP头是一组HTTP响应头,告诉浏览器如何安全地处理您的内容。没有正确的安全HTTP头,您的网站容易受到跨站脚本攻击(XSS)、点击劫持和MIME类型嗅探等攻击。好消息是:添加它们不需要更改代码——只需在您的 .htaccess 或Nginx配置中添加几行即可。

本指南解释了最重要的安全HTTP头,展示您如何免费检查当前的安全评分,并指导您如何在Apache或Nginx托管上添加这些HTTP头。

每个网站都应该拥有的关键安全HTTP头

HTTP头 防护范围 推荐值
Strict-Transport-Security HTTPS降级攻击 max-age=31536000; includeSubDomains
Content-Security-Policy XSS和未授权资源加载 按网站自定义(例如 default-src 'self')
X-Frame-Options 通过iframe嵌入的点击劫持 SAMEORIGIN 或 DENY
X-Content-Type-Options MIME类型嗅探攻击 nosniff
Referrer-Policy 引用者信息泄露给第三方 strict-origin-when-cross-origin
Permissions-Policy 未授权访问摄像头、麦克风、地理定位 geolocation=(), microphone=(), camera=()
X-XSS-Protection 反射型XSS(旧版浏览器) 1; mode=block

立即免费检查您的安全HTTP头

在添加HTTP头之前,快速检查一下您的网站已经发送了哪些头,还缺少哪些。以下是一个免费在线工具,提供详细、易于理解的结果:

🔒

dnsxray.com — 安全HTTP头检查器

立即检查任何网站的HTTP安全HTTP头。查看存在哪些HTTP头、缺少哪些HTTP头,并获得清晰的修复建议——无需安装。

免费检查安全HTTP头 →

理解评分系统

安全HTTP头检查器通常根据存在哪些HTTP头以及它们的配置效果如何,对您的网站评分从A+到F:

A+所有HTTP头,最佳值
A几乎完整
B核心HTTP头存在
C很少HTTP头 — 需尽快修复
F缺失大多数或全部

大多数未配置的网站评分为D或F。一个好的目标是B+或更高。对于电子商务、银行或基于登录的网站,目标应为A+。

在.htaccess中添加安全HTTP头(Apache / DirectAdmin)

在基于Apache的托管上——包括AsiaGB的DirectAdmin托管——在您的根目录 .htaccess 文件中添加安全HTTP头:

# 安全HTTP头 — 添加到 .htaccess
<IfModule mod_headers.c>
    # 强制HTTPS 1年
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" "expr=%{HTTPS} == 'on'"

    # 防止点击劫持
    Header always set X-Frame-Options "SAMEORIGIN"

    # 防止MIME嗅探
    Header always set X-Content-Type-Options "nosniff"

    # 引用者策略
    Header always set Referrer-Policy "strict-origin-when-cross-origin"

    # 禁用摄像头/麦克风/地理位置
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"

    # 旧版XSS防护
    Header always set X-XSS-Protection "1; mode=block"
</IfModule>

在Nginx中添加安全HTTP头(VPS)

在运行Nginx的VPS上,在您的网站配置的 server 块内添加这些HTTP头:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
add_header X-XSS-Protection "1; mode=block" always;

在上线前在测试环境中测试安全HTTP头

在将安全HTTP头推送到生产服务器之前,先在测试环境中进行测试——尤其是CSP,它最容易破坏功能。以下是可靠的测试工作流程:

  1. 检查浏览器DevTools控制台:添加HTTP头后,打开控制台选项卡(F12)并查找"拒绝加载"或"被Content Security Policy阻止"的消息。
  2. 从Report-Only模式开始:使用 Content-Security-Policy-Report-Only 来监控违规,而不阻止任何内容。至少运行两到四天以捕捉边缘情况。
  3. 测试每个功能路径:练习所有网站功能——表单、嵌入式视频、地图、支付小工具、登录流——因为每个可能需要CSP中的不同源允许。
  4. 在移动设备上测试:某些移动浏览器对CSP指令的解释略有不同。至少在iOS Safari和Android Chrome上进行测试。
  5. 使用检查器进行实时验证:部署到生产环境后,重新运行 dnsxray.com/security-headers 以确认HTTP头确实被正确提供。

没有测试环境?使用子域(例如 staging.yourdomain.com)或本地开发设置。在Apache上使用XAMPP或Laragon时,将HTTP头放在Virtual Host配置中,而不是.htaccess中,以便更容易管理。

跨平台的安全HTTP头:Apache、Nginx和框架

设置安全HTTP头的方法取决于您的托管堆栈。以下是最常见环境的快速参考:

平台 HTTP头设置位置 注释
Apache(共享托管) 文档根目录的 .htaccess 需要 mod_headers ——在大多数主机上默认启用,包括AsiaGB
Nginx(VPS) nginx.conf 或 sites-enabled/ 中的网站配置 使用 add_header ... always; —— always 标志确保HTTP头也出现在错误页面上
Next.js next.config.js HTTP头数组 在构建时应用;支持正则表达式路由匹配
Laravel HTTP中间件类 在 app/Http/Kernel.php 全局中间件堆栈中注册
Cloudflare Pages / Netlify _headers 文件或平台配置 Apache .htaccess在这些平台上不适用
WordPress(插件) .htaccess或安全插件 在 # BEGIN WordPress 上方添加HTTP头以防止永久链接保存覆盖

深入理解Content-Security-Policy

Content-Security-Policy(CSP)是最强大的——也是最复杂的——安全HTTP头。它告诉浏览器确切地允许哪些源加载脚本、样式、图像、字体和其他资源。精心设计的CSP使XSS攻击执行起来要困难得多,因为即使攻击者注入脚本标签,如果源不在白名单中,浏览器也会拒绝运行它。

核心CSP指令

使用Google Analytics和Google Fonts网站的示例CSP

# 示例CSP —— 根据您的网站自定义
Header always set Content-Security-Policy \
  "default-src 'self'; \
   script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://www.google-analytics.com; \
   style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; \
   font-src 'self' https://fonts.gstatic.com; \
   img-src 'self' data: https://www.google-analytics.com; \
   connect-src 'self' https://www.google-analytics.com; \
   frame-ancestors 'self';"

从Report-Only模式开始:在强制执行之前使用 Content-Security-Policy-Report-Only。这会将违规记录到浏览器控制台而不阻止任何内容,让您在影响真实用户之前完善策略。

安全HTTP头影响对比

每个安全HTTP头都防护不同的攻击方式。了解缺失每个HTTP头的风险有助于您优先考虑首先实现的内容:

HTTP头 优先级 缺失的风险 最容易受影响的网站
Strict-Transport-Security 关键 攻击者可以将HTTPS降级为HTTP 任何HTTPS网站
Content-Security-Policy 关键 XSS攻击可以窃取cookies和会话令牌 基于登录的、电子商务网站
X-Frame-Options 高 网站可以在iframe中被嵌入用于点击劫持 银行、管理员仪表板
X-Content-Type-Options 中等 浏览器可能执行伪装成其他文件类型的脚本 接受文件上传的网站
Referrer-Policy 中等 私密URL(例如查询字符串中的令牌)泄露给第三方 使用基于URL令牌的网站
Permissions-Policy 中等 第三方脚本可以访问摄像头、麦克风或位置 任何带有第三方脚本的网站

HSTS预加载:您必须理解的长期承诺

HSTS预加载意味着将您的域注册到Chrome、Firefox、Safari和Edge在其源代码中内置的硬编码列表中。浏览器在发出任何网络请求之前强制执行HTTPS——甚至在首次访问时——因为它已经知道您的网站需要它。

在 hstspreload.org 提交到HSTS预加载列表之前的要求:

关键警告:HSTS预加载极其难以撤销。浏览器需要数月时间才能发布更新的列表来移除您的域。如果任何子域没有SSL或仍然提供HTTP内容,切勿提交预加载——用户将无法访问该子域数月。

添加安全HTTP头后的常见问题

实现安全HTTP头有时会破坏功能。以下是最常见的问题及其解决方法:

1. 添加CSP后出现白屏

最常见的原因是CSP阻止了所需的脚本或样式表。打开浏览器DevTools(F12),检查控制台选项卡,并查找"拒绝加载..."错误。每个错误都会包含被阻止的URL——将该域添加到相应的CSP指令中。

2. 外部图像或视频未显示

验证您的CSP中的 img-src 和 media-src 包含托管这些资产的域。例如,如果您从CDN提供图像,该CDN域必须明确列出。

3. Google Analytics或跟踪标签停止工作

将跟踪平台域添加到 script-src 和 connect-src:

script-src 'self' 'unsafe-inline'
  https://www.googletagmanager.com
  https://connect.facebook.net;
connect-src 'self'
  https://www.google-analytics.com
  https://www.facebook.com;

4. HSTS防止开发期间的HTTP访问

这是预期行为——看到HSTS HTTP头的浏览器将在max-age持续时间内拒绝HTTP连接。对于本地测试,使用隐身窗口,或在Chrome的 chrome://net-internals/#hsts 中清除HSTS状态。

调试提示:使用 dnsxray.com/security-headers 来验证在更改 .htaccess 或Nginx配置后您的服务器实际发送了哪些HTTP头。缓存的响应有时会显示过时的HTTP头数据。

WordPress的安全HTTP头

在 # BEGIN WordPress 块上方将HTTP头添加到您的根 .htaccess(当您保存固定链接时,WordPress会在该标记下方重写)。或者,使用插件:

分步说明:使用dnsxray.com检查HTTP头

  1. 打开 dnsxray.com/security-headers
  2. 输入您的网站URL(例如 https://yourdomain.com)并单击检查
  3. 查看您的总体评分以及每个单独HTTP头的状态
  4. 缺失的HTTP头会显示具体的修复说明
  5. 将HTTP头添加到 .htaccess 或Nginx后,重新检查以确认评分改进

立即尝试:打开 dnsxray.com/security-headers,输入您的URL,在30秒内获得您的安全HTTP头评分——完全免费,无需账户。

常见问题

安全HTTP头会影响Google SEO排名吗?
不会直接影响,但HTTPS强制执行(HSTS)是已知的排名信号。更重要的是,正确的安全HTTP头可防止驱赶访客并增加跳出率的浏览器警告。安全的网站也会与用户建立信任,并降低被黑名单列入的风险。
错误的Content-Security-Policy会破坏我的网站吗?
是的。过度严格的CSP可能会阻止Google Analytics、字体或第三方脚本。从 Content-Security-Policy-Report-Only 模式开始监控违规而不强制执行,然后在切换到强制执行之前完善策略。
AsiaGB托管支持安全HTTP头吗?
是的,完全支持。AsiaGB使用带DirectAdmin的Apache,包括mod_headers支持。您可以通过.htaccess自己添加安全HTTP头,或向支持团队寻求帮助配置它们。
HSTS与Strict-Transport-Security相同吗?
是的。HSTS(HTTP严格传输安全)是由 Strict-Transport-Security 响应HTTP头实现的机制的名称。一旦浏览器看到此HTTP头,它就会在 max-age 中指定的持续时间内强制执行HTTPS连接,而不允许回退到HTTP。

AsiaGB托管内置安全HTTP头

每个托管计划都包括免费SSL、HSTS、cPGuard和Imunify360恶意软件保护——起价500泰铢/年