为什么 HSTS 不会自动应用于子域以增强安全性?出于什么原因,有人不想在每个子域上都使用 HSTS?

信息安全 tls Web应用程序 http hsts 子域
2021-08-31 07:12:46

如果由任何域部署,HSTS 将连接限制为始终为 HTTPS,但是要将其应用于子域,需要“includeSubDomain”属性。为什么政策本身不强制包括所有子域?出于什么原因/限制要求设置标志?

3个回答

子域通常可以用于不同的目的,因此它们可以使用可能托管在不同设备上的不同 Web 应用程序。

并非每个子域上的每个网站都需要遵循域的策略,甚至可能由于应用程序缺乏支持和/或没有 SSL 证书,子域上的站点不支持 HTTPS。

因此,在主域上自动执行策略可能会破坏子域。

最好让网站所有者决定是否影响子域,就像网站所有者决定是否使用 HSTS 一样。额外的灵活性可以通过减少兼容性障碍来帮助提高 HSTS 的采用率。

某些子域服务可能尚未安装 HTTPS 服务器。在某些情况下,在某些子域上使用 HTTPS 在安全方面并不重要。

这回答了为什么includeSubDomain不是强制性的。

人们仍然可能会问为什么它不是默认值:

为此,我想指出,除非要求您的访问者在他们自己的浏览器中清除缓存,否则无法撤消 HSTS。您的访客可能不会这样做。

因此,如果您不小心将 HSTS 应用于超出预期的范围,那么对于这些​​访问者来说,该(子)域将永久关闭,直到他们切换设备或浏览器、清除浏览器上的缓存或站点所有者安装 HTTPS 服务器。(这在某些遗留服务上可能在技术上很困难)

我最好的例子就是网络托管。想象一个虚拟主机,假设 somecheapwebhostingexample.com 有 HSTS,甚至还有一个支付页面。然后他们没有通配符证书或类似的东西。

然后客户注册为 customer1.somecheapwebhostingexample.com 。很明显,这里默认部署子域是一个不好的例子。

还有其他示例,其中有多个子域,但没有可用于所有子域的证书。