试图找到答案和规范实际上似乎没有帮助。
HSTS的规范说明了以下关于includeSubdomains
标志的内容:
includeSubDomains is a flag which, if present, signals to the UA that
the HSTS Policy applies to this HSTS Server as well
as any subdomains of the server's FQDN.
我看到的所有示例都假设请求转到例如example.com
(没有指定子域(,因此返回includeSubdomains
将使其适用于www.example.com
、api.example.com
等以及example.com
。
两个问题:
如果我向
www.example.com
的请求返回带有includeSubdomains
的HSTS标头,它会应用于www.example.com
和所有其他子域吗?听起来确实如此。它是否也适用于顶级example.com
?如果我在请求中向
www.example.com
返回HSTS标头,并且我不包含includeSubdomains
标志,那么HSTS标头将仅应用于www.example.com
,还是也应用于example.com
?
例如,我是否可以将请求的一个HSTS标头返回给www.example.com
,并将另一个HSSS标头(可能具有不同的最大年龄值(返回给api.example.com
?如果我向指定了includeSubdomains
的example.com
返回请求的标头,那么优先权是子域特定的HSTS标头还是全局标头?
如果我向www.example.com的请求返回一个带有includeSubdomains的HSTS标头,它会应用于www.example.com和所有其他子域吗?听起来确实如此。它是否也适用于顶级example.com?
否,它将应用于为其设置的域的所有子域。例如sub.www.example.com。它将不适用于任何同级域(例如api.example.com(,也不适用于父域(example.com(。includeSubdomains
标志用于进一步向下,而不是用于向上或侧向。
出于这个原因,许多网站建议从顶级域加载一些内容,以获取顶级HSTS策略(s.g。https://example.com/pixel.png)从而保护包括兄弟域在内的整个站点。即使请求301指向www变体,这也能工作(https://example.com/pixel.png)——如果301包含HSTS头,因为这足以让浏览器看到顶级策略。
如果我在对www.example.com的请求中返回HSTS标头,并且我不包括
includeSubdomains
标志,那么HSTS标头是仅适用于www.example.com,还是也适用于example.com?
www.example.com的任何HSTS标头对example.com都没有影响。它只适用于www域(以及可能的子域,具体取决于是否存在includeSubdomains
标头(。
例如,我可以将请求的一个HSTS标头返回到www.example.com,并将另一个HSSS标头(可能具有不同的最大年龄值(返回到api.example.com吗?
是的,它们是完全独立的。
如果我向example.com的请求返回一个标头,其中指定了includeSubdomains,那么优先权是子域特定的HSTS标头还是全局标头?
特定子域优先。但是,如果子域特定的策略在没有重置的情况下过期,则它将不复存在,因此基本级别的域策略将生效。