Strict-Transport-Security

优质
小牛编辑
126浏览
2023-12-01

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