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

in #cn7 years ago

前文回顾:
Firefox守望者报告[0]缘起
Firefox守望者报告[1]为什么说火狐到了最危险的时候
Firefox守望者报告[2]HTTPS简介
Firefox守望者报告[3]HTTPS-Everywhere

基本信息:
Smart HTTPS
开源地址:GitHub
当前版本:0.2.2
支持浏览器:Firefox / Firefox for Android / Chrome / Opera

上回说到,HTTPS-Everywhere 需要志愿者编写规则,具有滞后性,会出现站点不再支持 HTTPS 而规则没有删除,站点部署了 HTTPS 却没有规则覆盖,等等问题。

要解决 Ew 的问题,显然要走与 Ew 完全不同的道路。ilGur1132 站了出来,他要让 Ew 的目标真正全自动“智能”实现——Smart Https (以下简称 SH)应运而生。

SH 的原理很简单,默认用加密模式访问所有站点,如果 3000 ms 没有成功响应,就退回 HTTP 模式,同时自动将该域名加入白名单中,下次不再尝试 HTTPS。

当时我给 Ew 项目提交的 PR 还有数十条长期没有得到合并,审核者太过繁忙,合并速度还不如我新提交来得快。正当困窘之时,无意中发现了 Smart Https,极为惊艳,调试成功后,几乎以为可以抛弃 Ew 了——准确地说,我还真的禁用 Ew 了一段时间,体验还是相当不错的。

然而,能量是守恒的,利弊是共存的。SH 在带来无数便利的同时,一样存在不少问题。除了白名单会明文记录访问的网址写入缓存,有隐私风险而没有关闭选项,功能能和体验上还是有些明显的缺憾的:

  1. 最明显的,拖慢非加密站点网速。由于 SH 会先尝试 HTTPS 再回落,大量没有部署 HTTPS 或者部署不到位的站点,需要两次请求,带来可感知的延迟。
  2. 有些站点明明有 HTTPS 却回落,有些明明证书错误却又不能自动回落,需要手动加入黑白名单。
  3. 接上条,黑白名单不能订阅在线列表,不能跨浏览器同步,不能导入导出,给多设备用户造成了不小的麻烦。
  4. 在某些配置诡异的站点(大多是 Discuz! 架构的论坛),服务器会认为两次访问,提示登录失败,其实已经成功了,需要手动刷新。

其实上面的问题可以忍受,可以通过内置的黑白名单或别的(重定向等)扩展辅助解决。

SH 目前一共有 11 个内置选项,不可谓不丰富:

  1. 超时时长——默认 3000 ms.
  2. 当出现 Mixed Content 时回落 HTTP——默认关闭。
  3. 在浏览器控制台记录错误等信息——默认关闭。
  4. 在黑白名单中显示完整网址——默认关闭。
  5. 给所有 HTTPS 站点添加 Upgrade-Insecure-Requests 响应头——默认关闭。
  6. 禁止自动添加白名单——默认关闭。
  7. 浏览器处于匿名模式下不添加白名单——默认关闭。
  8. 黑白名单规则使用正则表达式——默认关闭。
  9. 黑白名单最大存储量——默认 50 条。
  10. 白名单,强制走 HTTP——默认为空。
  11. 黑名单,强制走 HTTPS——默认为空。

然而,这些选项大多是利弊各半,用户需要准确评估自身需求来选择。
1:调大了影响网速太明显,调小了回落太多。
3:记录了影响性能,不记录调试麻烦。
4:这个倒是明确建议关闭,反正需要的时候可以打开,默认显示的话左侧白名单的长 URL 会挤占右侧黑名单的空间。
6:自动加白名单可以降低性能损耗,减少常用网站的延迟,个人建议保持默认。小技巧:勾选一次该选项就会清空已自动添加的白名单,并保留手动添加的白名单,轻松清除历史遗留问题,偶尔维护个人规则可用。
7:功能和安全不可兼得。
8:打开则明显降低性能,不打开则只能使用完整域名不够灵活。
9:调小了经常要重新添加,调大了更新不够及时。
10 和 11 黑白名单的利弊上面已经说过,就不再赘述。

也许有朋友注意到选项 2 和 5 我没有没有提及。当然不是因为不重要,恰恰相反,这是 SH 最大的痛点,需要单独成篇。只有加上这最后一块拼图,SH 和 Ew 才能发挥出远超本身的威力,本系列才算完整,我才能给出目前相对平衡的搭配。

明日推出 Firefox 守望者报告[5],也是 HTTPS 专题最后一篇——“鬼”斧神工之 Upgrade Mixed Content。
Follow me,第一时间获取信息。

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.027
BTC 59209.84
ETH 2659.93
USDT 1.00
SBD 2.43