BBC 如何推出 HSTS 以提高安全性和性能。

BBC 正为其网站部署 HSTS,以提高安全性和性能。了解它的含义以及 HSTS 能为您提供哪些帮助。

HTTPS 的采用率近年来稳步增长。根据 HTTP Archive 的 2021 年网络年鉴,大约 91% 的桌面设备和移动设备请求都通过 HTTPS 传送。HTTPS 不仅停留下来,还是使用 Service Worker 等功能和 HTTP/2HTTP/3 等现代协议的必要前提条件。

最近,BBC 首席技术架构师 Neil Craig 在推文中表示,我们正在逐步为 bbc.com 推出 HTTP 严格传输安全协议 (HSTS)。我们来看看这对 BBC 意味着什么,以及这对你意味着什么。

问题

Web 服务器通常会同时监听端口 80 和 443 上的请求。端口 80 适用于不安全的 HTTP 请求,而 443 适用于安全的 HTTPS。这可能会造成问题,因为当您在地址栏中输入地址时,不带 https:// 协议前缀(就像大多数用户通常所做的那样),有些浏览器会由于传统原因而将流量定向到不安全的 HTTP 版本网站(但情况并非总是如此)。

要确保用户不访问不安全的网站版本,一种常用方法是为所有请求设置从 HTTP 到 HTTPS 的重定向。这当然有效,但它引发了以下一系列事件:

  1. 服务器通过 HTTP 接收请求。
  2. 服务器将发出一个重定向,以转到与所请求资源的 HTTPS 等效项。
  3. 通过 HTTPS 的服务器必须与浏览器协商安全连接。
  4. 内容会照常加载。

虽然重定向可以正常运行,但可能会出现错误配置,使得它们仍然允许访问不安全的网站版本。即使所有内容都配置正确,但仍存在一个安全问题,即用户在重定向阶段仍会通过不安全的 HTTP 进行连接,这会使用户面临危险的中间人攻击

输入 HSTS

浏览器支持

  • 4
  • 12
  • 4
  • 7

来源

HSTS 由 HTTPS 请求的 Strict-Transport-Security HTTP 响应标头指定。设置完成后,网站回访将触发一种称为“307 内部重定向”的特殊重定向,即浏览器(而不是服务器)处理重定向逻辑。这可防止请求被拦截,因为它绝不会离开浏览器,所以更安全。除此之外,这些类型的重定向速度非常快,因此从 HTTP 到 HTTPS 的跳跃期间任何明显的延迟都会被消除。

从 HTTP 到 HTTPS 的 307 内部重定向,由 HSTS 标头触发。307 重定向只需要 2 毫秒。

Cache-Controlmax-age 指令的语法类似,HSTS 标头会指定 max-age 指令。此指令采用以秒为单位的值,用于指定政策的有效期:

Strict-Transport-Security: max-age=3600

在上述示例中,政策应该仅在一小时内生效。

部署 HSTS

部署 HSTS 的主要缺点是,如果您尚未准备好将源站视为绝对安全的来源。假设您要从多个子网域提供资源,但并非所有子网域都是安全的。在这种情况下,HSTS 标头可能会破坏您的网站

BBC 采用正确的 HSTS 部署方法。正如 Neil Craig 在他的推文中提到的,为 bbc.com 设置的初始值为 max-age=10

这种方法意味着政策最初仅在 10 秒内有效。这样做的好处不多,但其主意是想了解应用 HSTS 时是否可能出现任何问题。随着时间的推移,您可以循序渐进地增加政策,看看是否会出现问题。撰写本文时,bbc.com 将指定 max-age=86400 的 HSTS 政策,这个值几乎肯定会随着时间的推移而增加。

部署 HSTS 时,肯定不希望出现长 max-age 值。您可能会发现,用户在遇到问题时,突然间神神马脑地解决问题。从小处着手,随着时间的推移逐步增加!如果您确信一切顺利,则可以将 max-age 指令设置为更长的时间段。建议在全面推出后max-age 设置为一到两年

借助 HSTS 预加载列表,获得更安全快捷的初始导航体验

HSTS 政策仅在用户首次访问某个网站后才会生效,因此对于第一次访问该网站的用户来说无法享受这些好处。但您仍然需要不安全的重定向。不过,您可以预加载 HSTS 政策,方法是将您的网站提交到 HSTS 预加载列表,这是一个硬编码的网站列表,被浏览器知道严格意义为 HTTPS。如果您的网站在预加载列表中,首次访问也会受到保护,通过 HSTS 的 HTTP 到 HTTPS 重定向也会即时生效。

亲自尝试

如果 BBC 愿意尝试 HSTS,那么您很可能也可以对自己的网站进行测试。您不妨在自己的网站上试一试,如果您希望提高收入,请在确信没有错误时将其添加到 HSTS 预加载列表中,以便为用户提供更安全且更快的体验。