返回子域的Strict Transport Security includeSubdomains



试图找到答案和规范实际上似乎没有帮助。

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.comapi.example.com等以及example.com

两个问题:

  1. 如果我向www.example.com的请求返回带有includeSubdomains的HSTS标头,它会应用于www.example.com所有其他子域吗?听起来确实如此。它是否也适用于顶级example.com

  2. 如果我在请求中向www.example.com返回HSTS标头,并且我包含includeSubdomains标志,那么HSTS标头将应用于www.example.com,还是也应用于example.com

例如,我是否可以将请求的一个HSTS标头返回给www.example.com,并将另一个HSSS标头(可能具有不同的最大年龄值(返回给api.example.com?如果我向指定了includeSubdomainsexample.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标头还是全局标头?

特定子域优先。但是,如果子域特定的策略在没有重置的情况下过期,则它将不复存在,因此基本级别的域策略将生效。

最新更新