从Javascript中检测损坏的锁定图标(混合安全/不安全内容)

jsh*_*sha 8 javascript security ssl https selenium

我正在努力使网站在HTTPS下完全正常运行.作为其中的一部分,我想确保我们永远不会"打破锁定".也就是说,我们永远不应该在SSL页面上加载非SSL内容,这可能会触发警告或其他指示符,具体取决于浏览器.为了验证这种情况,我想做两件事:

  1. 编写用于验证各种操作的Selenium测试不会破坏锁定.
  2. 在JS中编写日志代码,在用户会话期间检查锁是否已损坏,如果存在则返回服务器.

是否有任何方法可以在JS中用于检查浏览器的HTTPS锁图标的损坏/未损坏状态?或者等价地,当前页面内容的混合/非混合状态?

jsh*_*sha 5

您无法从 JavaScript 本身检测到这一点,但您可以使用Content-Security-Policy (CSP) HTTP 标头来指示浏览器将混合内容的报告发送到您的服务器或第三方聚合服务。

以下是向第三方服务 report-uri.io 报告混合内容的 CSP 标头示例:

Content-Security-Policy-Report-Only: default-src https:; report-uri https://report-uri.io/report/<YOUR_NAME_HERE>

Report URI 维护者撰写的这篇文章更详细地介绍了其工作原理。如果您愿意,还可以配置 CSP 标头以向您自己的 URL 报告。