HSTS预加载含义

HSTS preload Meaning

MDN HTTP Strict Transport Security (HSTS)中有一个HSTS设置的例子如下

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

哪里可以找到max-ageincludeSubDomainsRFC 6979中对应的意思,但是没有preload的意思。

我在最新的Chrome和Firefox中测试过,似乎preload根本没有做任何事情。使用和不使用预加载,在请求 http 请求时,如果使用 Chrome,两次试验都可以找到 Chrome 浏览器创建的 307 Internal Redirect,而无需向服务器请求,这是 HSTS 所期望的。

那么preload的目的是什么?

另外,即使我加了HSTS header,在用户第一次用HTTP访问网站时,还是有机会被攻击的。我们如何才能减轻这种风险?也就是说,我们如何告诉浏览器在任何请求发送到服务器之前将域添加到 HSTS 列表?

P.S.

我找到了 https://hstspreload.org/,如果我需要注册域,需要我添加 max-agepreload 指令。这就是为什么需要 preload 的原因吗?这应该是我应该添加我的域以确保新用户免受 SSL 剥离攻击的页面?

预加载是一项重大承诺。它将有效地硬编码到浏览器的代码中。考虑到推出新版本至少需要几个月的时间,基本上是不可逆的。

此外,由于它在域级别下降,因此出现了错误。例如预加载 domain.com 但覆盖该博客 domain.com 或内部网 domain.com 尚未升级到 HTTPS。在这一点上,您的选择是 1) 升级到 HTTPS 并在零用户的情况下访问该站点,直到或 2) 反转预加载并等待几个月以将其推广到所有浏览器并处理零用户直到那时。

HTTPS 现在更普遍,所以风险降低了,但当 HSTS 预加载首次出现时,这些才是真正的风险。

因此,preload 属性是一个信号,表明网站所有者已准备好履行该承诺。它还可以防止其他人提交未使用此 header 的网站(无论是恶意的还是出于善意但被误导的意图)。

你是对的,它不会在浏览器中“做”任何事情。

还讨论了检查预加载 header 是否仍在发送,如果没有则删除预加载但不确定是否已完成。