HTTP严格传输安全协议是什么?HSTS配置方法详解
- 云服务器
- 2026-07-04
- 5
HTTP 严格传输安全协议(HSTS, HTTP Strict Transport Security)是一种 Web 安全策略机制,它允许 Web 服务器向浏览器声明该网站应仅通过 HTTPS 连接进行访问,这一机制旨在防止中间人攻破(MITM)和协议降级攻破,确保用户与服务器之间的通信始终处于加密状态。
核心工作原理
HSTS 的工作流程主要依赖于服务器在 HTTP 响应头中发送特定的指令,浏览器接收到该指令后会将其记录在本地存储中,具体过程如下:
- 首次访问与策略下发:当用户首次通过 HTTPS 访问支持 HSTS 的网站时,服务器会在响应头中包含 Strict-Transport-Security 字段。
- 浏览器缓存策略:浏览器解析该字段,识别出 HSTS 策略,并将其存储在本地数据库中,存储内容包括域名、最大有效期(max-age)以及是否包含子域名(includeSubDomains)。
- 后续强制 HTTPS:在 max-age 有效期内,如果用户再次尝试通过 HTTP 访问该域名(包括手动输入 http:// 或点击旧链接),浏览器会在本地直接将其转换为 HTTPS 请求,而不会向服务器发起任何 HTTP 请求。
- 预加载列表(Preload List):为了克服首次访问仍需 HTTP 的问题,Google Chrome 等主流浏览器维护了一个 HSTS 预加载列表,如果网站申请并被加入此列表,浏览器在出厂或更新时就会内置该策略,即使用户从未访问过该网站,也会强制使用 HTTPS。

HSTS 头字段详解
服务器通过 Strict-Transport-Security 头字段来配置 HSTS 策略,该字段包含以下关键参数:
| 参数 | 描述 | 示例值 |
|---|---|---|
| max-age | 指定浏览器应遵守 HSTS 策略的时间长度,单位为秒。 | max-age=31536000 (1年) |
| includeSubDomains | 可选参数,如果存在,表示策略适用于所有子域名。 | includeSubDomains |
| preload | 可选参数,如果存在,表示网站希望被加入浏览器的 HSTS 预加载列表。 | preload |
示例响应头:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
HSTS 的主要优势
- 防止协议降级攻破:攻破者可能尝试将 HTTPS 连接降级为不安全的 HTTP 连接以窃取数据,HSTS 确保浏览器始终使用 HTTPS,从根本上杜绝了这种可能性。
- 消除重定向中间人攻破:在没有 HSTS 的情况下,如果用户输入 http://example.com,服务器可能会重定向到 https://example.com,攻破者可以在重定向过程中拦截并改动响应,HSTS 使得浏览器在本地完成 HTTP 到 HTTPS 的转换,避免了与服务器的无效 HTTP 交互。
- 增强用户隐私与安全:通过强制加密通信,HSTS 保护了用户的登录凭证、个人信息和交易数据不被窃听或改动。

实施 HSTS 的注意事项
尽管 HSTS 能显著提升安全性,但在实施时需格外谨慎:
- 初始配置风险:如果配置错误(如 max-age 设置过短或误加 includeSubDomains),可能导致用户无法访问网站,建议先设置较短的 max-age(如 300 秒)进行测试,确认无误后再逐步增加。
- 子域名覆盖范围:使用 includeSubDomains 会强制所有子域名使用 HTTPS,如果某个子域名尚未配置 SSL 证书,用户将无法访问该子域名。
- 预加载的不可逆性:一旦网站被加入 HSTS 预加载列表,除非从列表中移除,否则所有使用该浏览器的用户都将强制使用 HTTPS,移除过程可能耗时数周甚至数月,因此申请预加载前必须确保网站完全稳定且无 HTTP 入口。
-

并非万能药:HSTS 仅解决传输层的安全问题,不能防止服务器端漏洞(如 SQL 载入、XSS)或钓鱼网站(如果攻破者拥有合法的 SSL 证书)。
相关问题与解答
问题 1:如果用户手动在地址栏输入 http:// 访问 HSTS 网站,会发生什么?
解答:
如果该网站已启用 HSTS 且浏览器已缓存其策略(或在预加载列表中),浏览器会在本地直接将 http:// 替换为 https://,然后发起 HTTPS 请求,用户不会看到任何 HTTP 请求发送到服务器,也不会看到重定向页面,如果浏览器尚未缓存该策略(例如首次访问且未预加载),则可能会先发起一次 HTTP 请求,服务器响应 HSTS 头后,浏览器在后续访问中才会强制执行。
问题 2:HSTS 能防止钓鱼网站攻破吗?
解答:
HSTS 本身不能直接防止钓鱼网站攻破,钓鱼网站通常通过模仿合法网站的域名或内容来欺骗用户,如果攻破者能够获取到合法域名的 SSL 证书(例如通过证书颁发机构漏洞或社会工程学手段),他们就可以搭建一个具有有效 HTTPS 连接的钓鱼网站,HSTS 无法识别其为恶意,HSTS 可以防止攻破者通过协议降级或中间人攻破来截持合法网站的流量,从而间接提升了整体环境的安全性,用户仍需通过检查域名、证书详情等方式来辨别钓鱼网站。