我对HSTS机制感兴趣,并想在下面说明一下:
例如,存在站点https://example.com存在。我使用chrome://net-internals/#hsts检查是否在此处启用了HSTS。它显示了下一个信息:
static_sts_domain:
static_upgrade_mode: UNKNOWN
static_sts_include_subdomains:
static_sts_observed:
static_pkp_domain:
static_pkp_include_subdomains:
static_pkp_observed:
static_spki_hashes:
dynamic_sts_domain: example.com
dynamic_upgrade_mode: FORCE_HTTPS
dynamic_sts_include_subdomains: true
dynamic_sts_observed: 1524145911.957196
dynamic_sts_expiry: 1555681911.957194
dynamic_pkp_domain:
dynamic_pkp_include_subdomains:
dynamic_pkp_observed:
dynamic_pkp_expiry:
dynamic_spki_hashes:
因此,我期望并认为在那里启用了HSTS。但是同时没有响应。为什么Chrome会显示此类信息,并且该网站启用了HSTS?
最佳答案
但是与此同时,没有任何Strict-Transport-Security标头作为响应。
因为动态条目已添加到您的Chrome实例中,所以它一定已经存在。
还请记住,HSTS可以在任何资源上发送,而不仅仅是主文档。因此,如果您将其发送到徽标资源上,那么它将在整个域中进行设置。
您可以使用相同的chrome://net-internals/#hsts
页将其清除,然后浏览一下它是否回来?如果是这样,那么仍然有东西在发送它,如果不是,那么也许该站点曾经用于宣传HSTS,但现在不再发送。
它被设置为可以使用一年:
(1555681911.957194 - 1524145911.957196) / 365 / 24 / 60 = 1 year
从我试图转换这些日期戳的粗略计算来看,它看起来像是最后一次设定在2018年4月20日。
如果该站点确实出于任何原因停止使用HSTS,则最好改为发布0标头,因此至少现在通过HTTPS访问的那些访问者将删除该策略:
Strict-Transport-Security: max-age=0; includeSubDomains
任何不通过HTTPS访问的人都不会清除它,直到它过期。
关于security - HSTS理解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50504160/