Chrome阻止混合内容下载

3,147 阅读3分钟

很多警告只有当正式生效时才会被注意到。

Chrome声明地址:Protecting users from insecure downloads in Google Chrome

什么是混合内容下载(mixed content downloads)?

首先说下混合内容(mixed content),浏览器会使用HTTPS或HTTP请求页面资源,当同一个页面同时存在HTTPS和HTTP时,被称为混合内容。

由于HTTPS的安全性远高于HTTP,而HTTP存在很多种被攻击的可能性。于是,为了用户的安全和隐私,Chrome开始确保安全页面中的所有下载行为都是安全的。也就是Chrome会逐步警告并禁止在HTTPS页面中的HTTP下载,不放过任何潜在的“不安全”资源。

时间表

从时间表上可以看出,所有的改动都严格通过三个步骤实施:控制台警告 —— 浏览器警告 —— 阻止

几个阻止的关键时间节点如下:

  • Chrome 85(2020.08):阻止非安全的可执行文件(如.exe、.apk等)下载
  • Chrome 86(2020.10):阻止非安全的压缩包(如.zip、.iso等)下载
  • Chrome 87(2020.11):阻止除多媒体以及文本以外的其他非安全(如那些无法归类的文件内容)下载
  • Chrome 88(2021.01):阻止所有混合内容下载

其中,对于移动版(iOS、Android)的Chrome,官方特意将阻止行为延后一个版本,因为这些操作系统本身就具备一定防御能力,真是有理有据令人信服。

契机

为什么在当下这个时间点(2020.11),我会注意到这个早在2020.02就已经发布的通告呢?

因为恰逢Chrome 86版本发布后,随着覆盖率增加,有的用户发现了当前站点的压缩包无法下载了(这应该是下载行为比较典型的使用场景),终于!时隔大半年,Chrome的警告引起了网站维护者的注意。

正如本文开头说的一样,“警告只有当正式失效的时候才会被注意到”,哪怕Chrome从控制台提醒升级到了浏览器提醒,但我坚信:只要功能一天可以使用,开发者一天就不会有所行动~~~

回头仔细看下Chrome的封锁计划,感觉Chrome还是慎重考虑了下载需求的使用频率的,尤其是多媒体,Chrome把阻止大计放在了最后,甚至是在最后时间段使用了白名单策略(禁止其他 + 允许多媒体和文本)。我想,如果真的是先阻止多媒体下载,那可能封锁上线的第一天就会遭到全网投诉。。。

饮鸩止渴

那,如果碰到一些年久失修、无人维护的网站该怎么办呢?

Chrome依然给开发者留了一个后门Flag,可以通过修改chrome://flags/#treat-unsafe-downloads-as-active-content,来让页面功能可以继续正常使用。

小小的吐槽

说到这,我就想起我司有一些历史悠久的陈年网站,Samesite的console warning闪了“几年”,依然无人问津。直到警告生效的那一天!依然,还是无人问津。。。

碰到这些网站,如果日常工作刚需,还得依靠Flag修改大法~