为什么 Facebook 在 HSTS 上线后很长一段时间都没有使用?

信息安全 tls Facebook hsts
2021-08-23 10:42:29

(请注意,Facebook 现在确实使用 HSTS。这个问题是在他们没有的时候提出的。)

要强制浏览器始终直接访问网站的 HTTPS(而不依赖于 HTTP 版本的 302 重定向),可以使用HSTS( HTTP Strict Transport Security )。

为了告诉浏览器应该始终使用 HTTPS 访问网站,可以在 HTTP 响应中发送“Strict-Transport-Security”标头。从那一刻起,该网站将存在于浏览器的 HSTS 列表中,当有人example.com在 URL 栏中键入站点名称(例如 )时,他们将被发送到https://example.com/而不是http://example.com.

Google、Gmail、Twitter 和 Paypal 是使用此功能的主要网站的示例。然而,Facebook 似乎并未在其响应中发送“Strict-Transport-Security”标头。谁能给我一个他们选择不使用 HSTS 的充分理由?

3个回答

编辑: Facebook 现在使用 HSTS,所以问题和答案现在都不正确。

因为为 Facebook 使用 HTTPS 是可选的。

如果您查看“帐户设置”和“安全设置”,则有一个“安全浏览”选项。它自 2013 年7 月以来默认为开启,但您仍然可以选择关闭它。

如果他们使用 HSTS,那么当您关闭“安全浏览”时,该网站将停止工作 - 至少,除非他们采取了一些相当时髦的解决方法。

我想不出任何禁用安全浏览的实际理由。当然,任何这样的理由都很少见。我认为选择更多是由于历史事故而不是积极的计划。

摘要:HSTS 即将到来,但该网站在保护用户信息方面存在一些障碍,例如当您单击链接时不会告诉网站您是谁。该特定问题的解释:https ://www.facebook.com/notes/facebook-engineering/protecting-privacy-with-referrers/392382738919

Firefox 是最后一个主要的坚持者。这是 2011 年提交的错误的第 14 条评论(2012 年 3 月 15 日):https ://bugzilla.mozilla.org/show_bug.cgi?id=704320#c14

对于 WebKit 用户,Facebook 计划在不久的将来实施“来源”政策。该政策有效地代表了我们网站今天的行为方式,但不依赖于滥用现有浏览器行为。背景:https ://www.facebook.com/notes/facebook-engineering/protecting-privacy-with-referrers/392382738919

元推荐人提案为 Facebook 用户提供了两个直接的好处:

  • 我们目前通过一个插页式端点使用 document.location.replace() 来为 Mozilla 用户执行外部重定向。实现本机重定向而不是依赖 JavaScript 会稍微提高性能,并使重定向能够在禁用 JavaScript 的情况下运行。

  • 我们有意将插页式广告从 HTTPS 降级为 HTTP,以便发送引用标头。这显然是不可取的,但目前在我们的上下文中是必要的。对 meta-referrer 的支持使我们能够保持安全连接并解决阻碍 Strict-Transport-Security 实施的最后一个问题

只是在提案背后提供一点支持。我们很乐意看到 Firefox 的支持。

后续评论 79(2014 年 1 月 30 日),相同的错误:https ://bugzilla.mozilla.org/show_bug.cgi?id=704320#c79

自 2010 年以来,Facebook 一直在要求这样做,我不确定我是否理解这种突如其来的热潮。

对评论 #14 的小更新,这是现在在 facebook.com 上为 Firefox 用户阻止 Strict-Transport-Security 的最后一个问题(它已为 Chrome/Safari 用户启用了一段时间)。我不会说我们很着急,我们很高兴等待您喜欢的解决方案,但我希望尽快启用 HSTS。

2015 年 5 月更新:Facebook 现在使用 HSTS。干得好。

$ http -h get https://www.facebook.com
Strict-Transport-Security: max-age=15552000; preload

另请参阅https://www.ssllabs.com/ssltest/analyze.html?d=facebook.com