首页 360正文

解决 Firefox 提示已阻止载入混合活动内容

admin 360 2021-09-14 171 0

网站启用了安全连接,引入了其他站内的JS资源,在Firefox浏览器下被提示已阻止载入混合活动内容,直接的结果就是文件并没有引入,无法完成想要的效果。

从 Firefox 18 开始,如果 HTTPS 页面中包含非加密的 HTTP 内容,浏览器会在控制台输出警告,记录 Mixed Active Content 请求。而从 Firefox 23 开始,浏览器会默认阻止 HTTPS 页面中可能影响网页安全的 HTTP 请求(即阻止 Mixed Active Content)。这样做会牺牲一些网站的兼容性,但对安全性的提高是很有帮助的。

获取 Mixed Content 相当于发起部分加密的连接,其中未加密的部分存在被中间人攻击的可能。不同类型的 Mixed Content 所产生的危害程度也有所不同,Mixed Passive Content 可能会使中间人获取到用户的设备信息,或让用户看到不正确的图片、音频等信息。而 Mixed Active Content 则可能导致用户的敏感数据被窃取,比如账号密码等。

解决方法

上面的文字说明了 Firefox 为什么会这样做,下面来看看如何解决这个问题,其实每个解决方法都有很大的缺陷,并不能完全满足你的项目解决方法。

升级或避免引入

升级被引入文件的网站为SSL安全连接,或者不引入非安全连接网站的资源,这样 Firefox 就不会提示这个错误,如果是图片那么只显示感叹号。

配置 Firefox 不阻止

这个方法只是暂时的,而且只针对你的浏览器,对于本地测试开发是可以的,如果实际的生产环境则没有任何效果,如果重装浏览器一样会失效。

打开新标签页,在地址栏输入 about:config,进入配置页面。

搜索 security.mixed_content.block_active_content,将 true 改为 false。

为什么 Mixed Content Blocker 不阻止所有的 HTTP 请求?

Mixed Content 可以分为两类:

  • Mixed Passive Content
  • Mixed Active Content

Mixed Passive Content (a.k.a. Mixed Display Content)

Mixed Passive Content 是在 HTTPS 页面中一些对安全性影响不大的 HTTP 内容,比如 Image、Audio、Video 等。即使这些内容被中间人篡改,所产生的影响也只是得知了用户的浏览器信息 (through user-agent included by HTTP headers)、用户看到了一张不正确的图片,这些被篡改的内容无法修改 DOM 树,也无法执行。另外,Mixed Passive Content 在 Web 上普遍存在。因此 Firefox 默认不会阻止 Mixed Passive Content。

Mixed Active Content (a.k.a. Mixed Script Content)

Mixed Active Content 是在 HTTPS 页面中一些能够修改 DOM 树的 HTTP 内容,如 JavaScript、CSS、XMLHttpRequest、iFrame 等。这些 HTTP 内容被中间人修改以后,可能会影响原有 HTTPS 内容的安全性,导致敏感的用户数据被盗。因此 Firefox 会默认阻止 Mixed Active Content。

为什么 Frame 应该是 Mixed Active Content?

Frame 之所以不能被分类为 Mixed Passive Content 主要有以下几个原因:

  • 一个 frame 可以将外层可靠的 HTTPS 页面跳转到恶意盗取信息的仿造页面。
  • 如果一个 HTTPS 页面嵌套着 HTTP frame,而这个 frame 包含表单用以输入用户信息,那么用户信息将会以 HTTP 方式传送,有被中间攻击者窃取的危险,而用户却毫不知情,还以为一切都在安全的 HTTPS 里。

如何判定 Mixed Content 是 Active 还是 Passive?

该 Mixed Content 是否会影响页面的 DOM 结构。(Yes -> Active, No -> Passive)

评论