前文回顾
Firefox守望者报告[3]HTTPS-Everywhere
基本信息
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 中也有个选项:
- 当出现 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 发布了新版加入了一个新的选项:
- 给所有 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都禁止我发帖了 ┭┮﹏┭┮
你好。今天是你来 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!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit