Strict-Transport-Security
Strict-Transport-Security
Strict-Transport-Security
响应报头(通常缩写为 HSTS)是一种安全功能,可以让一个网站告诉大家,它应该只使用
HTTPS,而不是使用 HTTP 进行通信的浏览器。
Header type | Response header |
---|---|
Forbidden header name | no |
句法
Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; preload
指令
max-age=<expire-time>以秒为单位,浏览器应该记住,该站点只能通过 HTTPS 访问。includeSubDomains可选如果指定了此可选参数,则此规则也适用于所有网站的子域。preload可选参见预装严格的运输安全细节。不是规范的一部分。
描述
如果网站通过 HTTP 接受连接并重定向到 HTTPS,则在此情况下,用户最初可能会在重定向之前与网站的非加密版本进行通话,例如,如果用户键入 http://www.foo .com / 甚至只是 foo.com。
这就为中间人攻击提供了可能性,在这种攻击中,可以利用重定向将用户引导至恶意站点,而不是原始页面的安全版本。
HTTP Strict Transport Security 头允许网站通知浏览器它不应该使用HTTP加载站点,而应该自动将所有尝试使用 HTTP 访问站点的尝试转换为 HTTPS 请求。
注:
Strict-Transport-Security
头忽略
浏览器时,您的站点使用HTTP访问; 这是因为攻击者可能会拦截 HTTP 连接并注入头部或将其删除。当通过 HTTPS 访问您的站点而不出现证书错误时,浏览器知道您的站点具有 HTTPS 功能,并会兑现Strict-Transport-Security
标题。
一个示例场景
您登录机场的免费 WiFi 接入点并开始浏览网页,访问您的网上银行服务以检查您的余额并支付几笔账单。不幸的是,您使用的接入点实际上是黑客的笔记本电脑,它们拦截您的原始 HTTP 请求,并将您重定向到银行网站的克隆而不是真实的东西。现在你的私人数据暴露给黑客。
严格的交通安全解决了这个问题。只要您使用 HTTPS 访问过您的银行网站,并且该银行的网站使用严格的传输安全性,您的浏览器就会知道只会自动使用 HTTPS,这可以防止黑客执行这种“中间人”攻击。
浏览器如何处理它
您的网站首次使用 HTTPS 访问并返回Strict-Transport-Security
标题时,浏览器会记录此信息,以便将来尝试使用
HTTP 加载网站时会自动使用 HTTPS。
当 Strict-Transport-Security 标头指定的到期时间过去时,下一次通过 HTTP 加载站点的尝试将照常进行,而不是自动使用 HTTPS。
无论何时将 Strict-Transport-Security
头传递给浏览器,它都会更新该站点的到期时间,以便站点可以刷新此信息并防止超时过期。如果需要禁用严格传输安全性,则将 max-age 设置为0(通过 https 连接)将立即使Strict-Transport-Security
标题失效,从而允许通过 http 访问。
预加载严格的运输安全
Google 维护一个 HSTS 预加载服务。按照指南并成功提交您的域名,浏览器将永远不会使用不安全的连接连接到您的域名。虽然该服务由 Google 托管,但所有浏览器都表示有意使用(或实际开始使用)预加载列表。
- 有关 Chrome 中的 HSTS 预加载列表的信息:https://www.chromium.org/hsts
- Firefox HSTS 预载列表的咨询:nsSTSPreloadList.inc
例子
所有现在和将来的子域名都是 HTTPS,最大年龄为1年。这会阻止访问只能通过 HTTP 提供服务的页面或子域。
Strict-Transport-Security: max-age=31536000; includeSubDomains
产品规格
Specification | Status | Comment |
---|---|---|
HTTP Strict Transport Security (HSTS) | IETF RFC | Initial definition |
浏览器兼容性
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | 4.0 | 4 | 12 | 11 | 12 | 7 |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | 4.4 | 18 | (Yes) | (Yes) | ? | ? | 8.4 |