【问题标题】:Is the max-age directive semantically necessary in the HSTS header?HSTS 标头中的 max-age 指令在语义上是否必要?
【发布时间】:2021-08-26 09:29:19
【问题描述】:

在尝试理解 HSTS 机制时,我无法理解 max-age 指令。难道 HSTS 标头的存在/不存在足以告诉浏览器切换到 HTTP 或 HTTPS 吗?

浏览器可以“永远”记住在第一次联系时应该通过 HTTPS 联系网站,直到标头在以后的响应中消失。加上 preload 指令也支持浏览器。

我在规范中找不到任何解释这一点的内容。 https://datatracker.ietf.org/doc/html/rfc6797

我觉得我错过了特定场景之类的东西。这不是批评者,我想了解为什么这个指令是必要的。

【问题讨论】:

    标签: security header http-headers hsts


    【解决方案1】:

    它允许它逐渐推出。建议先将其设置为非常小的max-age,如果没有问题,再将其增大。这避免了对任何非 HTTPS 站点进行 DoS 攻击的真正风险。虽然这种情况变得越来越少,但当它第一次出现时,这是一个真正的风险,因为 HTTP 仍然非常普遍。

    例如,您将其部署在https://www.example.com 和该 Web 服务器上,并且该服务器还响应(并设置了 HSTS 标头)https://example.com。现在假设您没有在http://blog.example.com(它是一个不重要的仅静态域)或http://intranet.example.com(它不是面向 Internet)上设置 HSTS。如果没有max-age,您可能会永远阻止这些站点,直到您可以将 HTTPS 部署到它们(这可能比添加一些服务器配置更棘手)。

    由于无法访问该站点,浏览器也看不到标题已被删除,因为您建议的重置。另外还有一个事实是,并非每个资源都需要设置 HSTS 标头 - 一个就足够了(尽管最佳实践是在每个 HTTPS 资源上设置它并包括重定向),因此没有标头不足以重置它。您需要明确设置max-age=0

    当然,如今,推荐的方法是在所有子域上使用 HTTPS(这几乎已成为常态,因为现在公共互联网比以前更 HTTPS - 尽管还不是默认设置)以及在内网站点上(尽管很难确定后者是否真的是大大小小的公司的常态)。

    您是对的,这可以通过将max-age 设置为可选(而不是现在的强制)来实现,并且网站所有者可以在准备好滚动后将其从 HSTS 标头中删除它完全出来了,但是有一个默认的max-age 是非常危险的——原因与上面给出的相同。没有默认值并让实施者考虑它,希望让他们考虑合适的,或者至少让他们意识到他们正在做出的承诺。

    预加载是使其永久化的方法,此时max-age 属性对于那些用户代理的实现预加载列表(主要是最流行的浏览器)来说是多余的。

    有一种观点认为,这个世界上没有什么是永恒的——域名来来去去,并被可能或可能不想使用 HTTPS(至少在最初)的新方所采用——尽管正如我所说的,随着 HTTPS 成为规范这不是什么大问题。

    还使用无限策略阻塞浏览器缓存,因为他们几年前访问过您的网站一次,这似乎有点粗鲁。虽然浏览器可以限制它(他们会这样做 - 稍后会详细介绍)但最好明确说明您想要的值。

    顺便说一句,上述两个原因都是我也不特别喜欢预加载 HSTS 的原因。

    另外值得注意的是,浏览器经常在max-age 上实现一个上限(通常是因为它被存储为一个 32 位整数),所以在其中粘贴一个任意大的值不会像你想象的那样将要。事实上,我记得讨论过一个浏览器(Firefox?)没有进行边界检查,所以设置一个大于实际可能溢出的值,因此根本阻止了策略的设置!正如我之前所说,预加载是使其永久化的方法。

    六个月或一年的max-age 是推荐的最佳实践,在此之后,无论如何,就更大的政策的安全性而言,收益会递减。如果访问者不是每 6 到 12 个月访问一次您的网站(此时他们将再次刷新 HSTS 政策max-age 秒),那么他们很可能正在使用新的浏览器或设备。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-04
      • 2023-03-05
      • 2022-08-24
      • 2014-07-31
      • 1970-01-01
      • 2022-01-22
      • 2021-07-24
      • 2023-03-12
      相关资源
      最近更新 更多