Firefox守望者报告[5]“鬼”斧神工之MixedContentHuntersteemCreated with Sketch.

in #cn7 years ago (edited)

前文回顾

Firefox守望者报告[2]HTTPS简介

Firefox守望者报告[3]HTTPS-Everywhere

Firefox守望者报告[4]Smart-HTTPS

基本信息

UpgradeMixedContent
当前版本:0.1.1
支持浏览器:Firefox / Firefox for Android

MixedContentHunter
开源地址:GitHub
当前版本:0.2.2
支持浏览器:Firefox / Firefox for Android / Chrome
在线规则:ivysrono/UpgradeMixedContentBlacklist

探索过程

2017年2月14日,在这个神奇的日子里,我苦恼于写某著名站点的 Ew 规则时碰上一些奇奇怪怪的问题。

Google 把我带到了 JerryQu 的小站,才有了HTTPS简介中不准确的归纳:

目前的主流浏览器政策对 HTTPS 网页内嵌 HTTP 资源的默认态度较为一致:静态资源(图片等)放行,动态资源(CSS/JS 等)则阻止,前者称为混合内容(Mixed Content),后者因被默认屏蔽,称为 Mixed Content Blocking(MCB)。该屏蔽由浏览器直接执行,原则上不是扩展能干预的。

由于大量站点站长没有注重这个问题,甚至 HTTPS 证书是主机商送的站长自己都不知道,导致在引用动态资源时固定使用 HTTP 模式,这时候如果直接在地址栏 +S 启用 HTTPS,会导致 MCB 破坏网页功能。所以 HTTPS-Everywhere 目前维护规则的原则之一就是对非 Tor 浏览器一般不得造成 MCB.

Smart-HTTPS 中也有个选项:

  1. 当出现 Mixed Content 时回落 HTTP——默认关闭。

这个选项显然只是将利弊权衡交给用户,不能解决问题。

还是在 关于启用 HTTPS 的一些经验分享(一) 中,JerryQu 大神指明了道路:

通过 CSP 的 block-all-mixed-content 指令,可以让页面进入对混合内容的严格检测(Strict Mixed Content Checking)模式。在这种模式下,所有非 HTTPS 资源都不允许加载。

这时,Google 告诉我们,在2016年8月12日,Pascal Ernster 静悄悄地在 AMO 提交了一个扩展:UpgradeMixedContent

时至今日,该扩展用户数才 71.

不是明珠蒙尘,是这个扩展太粗暴了。作者认为,不应该发出任何未加密的网络请求,所以该扩展将所有 HTTPS 页面下的所有 HTTP 资源都升格了。这在解决前述问题的同时带来了新的问题:原本默认能通过的图片等静态资源(准确地说是 Optionally-blockable 类,但为了便于理解,继续沿用 静态/动态 之分),如果本身确实不支持加密,就反而无法正常显示了。

从作者的个人主页可以看出这是位极端隐私党人,他的选择显然不适合普罗大众。

我给 Smart Https 的作者去信,希望能将这个功能和现有黑白名单功能整合起来。结果过了快半年,SH 发布了新版加入了一个新的选项:

  1. 给所有 HTTPS 站点添加 Upgrade-Insecure-Requests 响应头。

黑白名单呢?请允许我做一个悲伤的表情。

解决方案

值此进退维谷之时,Ew 项目核心维护者中唯一的中文用户:gloomy-ghost 闪亮登场。

在介绍 Ew 时我们说过,没有鬼兄的持续帮助,中文区的规则恐怕还是一片狼藉。这一次,鬼兄再次神兵天降,在 UpgradeMixedContent 的基础上开发出了 MixedContentHunter,增添黑名单功能,并移植了 Chrome 版本。黑名单即排除规则,以域名为单位,支持在线规则导入。

谨以此文标题向鬼兄致敬。

为了方便使用,回馈社区,我维护了个了个黑名单在线列表,将我在日常使用中遇到的,被该扩展破坏的站点加入其中,项目首页的测试链接可供参考。

尾巴

终于,HTTPS 专题的主体部分已经完结。

HTTPS-Everywhere + Smart-Https + MixedContentHunter + UpgradeMixedContentBlacklist 可以适应绝大多数网站,满足绝大多数用户的需求。进阶用户可以根据自己的需要调整设置,甚至向项目贡献规则。

在本系列缘起中,我说过:

本系列以问题为向导,以一个普通用户的角度出发,尽可能提供在 Firefox 和 Chrome 间通用的解决方案,突出 Firefox 独特优势。

现在几篇都是通用解决方案,Firefox 的优势不明显。下一篇,将介绍被广泛忽视的 Firefox for Android.

本文拖稿三天,今后再也不敢预告发布日期了,Steemit都禁止我发帖了 ┭┮﹏┭┮

Sort:  

你好。今天是你来 steem 刚满一个月的日子。由于你在中文区发布过文章,中文区新人之家“希望工程”今天特别为你庆祝满月,请点击查看。新人之家欢迎你,欢迎参加这里举办的各种活动,并期待你在未来继续发布优质文章!

Hello. Today you have been on Steem for one month. You have contributed at least one post in CN community. The Welcome Center for New Steemians is having a celebration for you. Welcome to CN community. Looking forward for more high-quality posts from you in the future!

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.029
BTC 57102.05
ETH 2348.73
USDT 1.00
SBD 2.33