我必须为运行 Tomcat 6 应用服务器的网站添加安全措施。其中之一就是添加 HTTP Strict-Transport-Policy 标头。我通过添加一个过滤器来实现这一点,该过滤器反过来会将此标头添加到任何响应中。但是,apache 网络服务器(在应用服务器前面)提供的静态内容是我无法访问的。所以我的问题是:我必须注意这一点吗?是否有必要在每次提供文件(.css、.js 等)时返回此标头?据我了解,此标头告诉浏览器“嘿,如果您读到此内容,请在接下来的一段时间内仅通过 HTTPS 访问此域”。
答案1
HSTS 适用于整个域,因此在所有响应中设置它就可以了。
答案2
不,您不必在每次响应时都发送标头。在射频功能函数库,第 6.1.1 节:
必需的“max-age”指令指定在接收到 STS 标头字段之后的秒数,在此期间 UA 将主机(从其接收消息的主机)视为已知 HSTS 主机。
因此,该标头明确设计为用于整个域,并缓存。为了保护没有此标头的静态资产,您做必须让浏览器首先访问发送标头的路由,然后在最大年龄值过期之前再次访问该路由。