该漏洞存在于网站没有设置HTTP Strict Transport Security(HSTS)头的情况下,可能会使用户容易遭受中间人攻击。当用户在浏览器地址栏中输入域名时,浏览器通常会默认使用不安全的HTTP协议而非加密的HTTPS协议。攻击者可以利用这一点对初始请求进行中间人攻击,并将用户重定向到攻击者选择的恶意网站。
为了保护用户免受此类攻击的影响,HSTS头指示用户的浏览器禁止使用与HSTS头相关联的域的不安全HTTP连接。一旦支持HSTS功能的浏览器访问了网站并设置了头,它将不再允许使用HTTP连接与该域通信。
使用HSTS头后,浏览器还会指示用户在“max-age”值仍然有效的情况下防止用户手动覆盖并接受不受信任的SSL证书。建议的“max-age”值是至少一年,即31536000秒。
为了避免该漏洞,应明确在应用程序代码中或使用Web服务器配置中设置HSTS头,并确保HSTS头的“max-age”值设置为31536000以确保至少一个完整的HSTS严格执行一年。
另外,包括“includeSubDomains”以最大化HSTS覆盖范围,并确保在当前域下的所有子域中强制执行HSTS。请注意,这可能会防止浏览器安全地访问使用HTTP的任何子域;然而,即使是不包含任何敏感信息的网站,其内容仍然可能通过中间人攻击被篡改以欺骗用户在HTTP域下。
最后,一旦强制实施了HSTS,请将Web应用程序地址提交到HSTS预载列表 - 这将确保即使客户端第一次访问Web应用程序(意味着Web应用程序尚未设置HSTS),遵守HSTS预加载列表的浏览器仍将把Web应用程序视为已经发出了HSTS头。请注意,这需要服务器具有可信的SSL证书,并发出一个带有1年maxAge(31536000)的HSTS头。
需要注意的是,如果发现多个漏洞响应缺少HSTS头,则此查询旨在每个应用程序返回一个结果。这意味着,如果发现了多个脆弱响应没有设置HSTS头,则只会突出显示此问题的第一个识别实例。如果发现了配置错误的HSTS实例(具有短寿命或缺少“includeSubDomains”标志),则会标记该结果。由于必须在整个应用程序中强制执行HSTS才能被视为安全部署HSTS功能,因此仅在查询突出显示此结果的地方修复此问题可能会产生后续结果。如果通过代码添加此头,请确保它在整个应用程序中统一部署。如果通过配置添加此头,请确保此配置适用于整个应用程序。




