K4YT3X
所謂的正確之物會隨人們各自的意志而遷移無常
2020 Firefox 安全、隐私、实用扩展指南
本篇文章将会介绍一些我目前使用的安全、隐私和实用相关的 Firefox 扩展。

新版本的 Firefox 加入了越来越多的隐私和安全相关功能,不过单凭 Firefox 自带功能还远远不能提供理想的安全上网体验。本篇文章将会介绍一些我目前使用的安全、隐私和实用相关的 Firefox 扩展,让网页浏览变得更加安全快捷。本文将着重介绍安全和隐私相关扩展,而对开发相关和实用性扩展一笔带过。扩展按字母顺序排序,可以通过右侧的目录来快速浏览。本文专业内容较多,如果有不正确或者可以改进的地方,请联系作者,我会立即更改。

安全隐私相关扩展

Behave!

Behave!

  • 防止 DNS rebind 攻击
  • 防止浏览器访问私有 IP 地址
  • 防止端口扫描

Behave! Test
当浏览器企图用 JavaScript 进行 IP 地址端口扫描时,Behave! 会记录并警告用户

可以到项目 GitHub 了解技术细节:https://github.com/mindedsecurity/behave


Canvas Blocker

Canvas Blocker

Canvas Blocker 扩展可以生成虚假的随机信息来欺骗各种追踪器。它可以伪装以下 API 的信息:

  • canvas 2d
  • webGL
  • audio
  • history
  • window(默认禁用)
  • DOMRect
  • navigator(默认禁用)
  • screen

Canvas Blocker 的设置较为复杂,需要了解上述的 API 才能较好地进行定制。


ClearURLs

ClearURLs

不少网站会在用户分享的链接中植入 UTM 参数以跟踪访问来源等。例如在如下的 Reddit 分享链接中,?utm_medium=android_app&utm_source=share 就是 UTM 参数。这两个参数告诉网站,这次的用户访问是通过分享链接访问的,而分享这个链接的设备运行的是 Android 系统。

https://www.reddit.com/r/linux/comments/hfkdlg/craig_federighi_confirms_apple_silicon_macs_will/?utm_medium=android_app&utm_source=share

下面的例子来源于 Amazon,其中 ref=sr_1_2?dchild=1&keywords=cisco&qid=1392922149&sr=8-2 的部分记录了各种信息,例如用户是搜索 Cisco 关键词后找到的这个商品。

https://www.amazon.com/SYSTEMS-10-Port-Gigabit-Managed-SG35010K9NA/dp/B01HYA36SG/ref=sr_1_2?dchild=1&keywords=cisco&qid=1392922149&sr=8-2

作为一个对隐私比较偏执的用户,我并不希望网站知道类似于我是从谁获得的链接,分享链接给我的人使用了什么关键字找到的这个链接这些多余的信息。ClearURLs 会自动将链接中的此类追踪参数全数删除,让网站只知道您请求了该网页,而无从获知这些多余的信息。

例如上述的 Amazon 页面就会被清理成这样,既简洁又保护了隐私。

https://www.amazon.com/SYSTEMS-10-Port-Gigabit-Managed-SG35010K9NA/dp/B01HYA36SG


Decentraleyes

Decentraleyes

很多网站会从 jQuery CDN 或者 Google Hosted Libraries 这样的第三方 CDN 加载流行的 JavaScript 框架。这样可以有效减轻网站的服务成本,同时也可以使用 CDN 的资源来加快加载速度。

例如下面的代码就会从 Google Hosted Libraries 加载 3.5.1 版本的 jQuery,而无需开发者在网页上额外保存一份 jQuery 副本。

1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

Decentraleyes 本地缓存了很多这样的文件。网站在向 CDN 请求文件的时候,Decentraleyes 就会拦截这些请求并且使用本地已经缓存好的文件。这么做既可以节省带宽,加快加载速度,也可以让用户摆脱对集中式网络的依赖以保护隐私。

Decentraleyes 工作原理
Decentraleyes 工作原理


Don’t touch my tabs!

Don’t touch my tabs!

当您通过点击 URL 打开新的标签页时(target=_blank),新打开的窗口会拥有一个 window.opener 对象指向前一个网页的 window 对象。简而言之,新打开的标签页面可以控制前一个网页上的内容

您可以通过 https://mathiasbynens.github.io/rel-noopener/ 这个网站更好的了解并体验这个机制。在禁止这个特性之前,可以通过点击图中的 URL 打开新的非同源页面。

rel=noopener Pre-Mitigation
rel=noopener 演示页面

如果该特性没有被禁止,网页会让您返回查看先前的页面。

Go Back
打开的新标签页

此时可以发现先前的页面已经被新的页面篡改。这个问题的存在意味着恶意网站可以向打开它的页面中植入恶意代码

Webpage Tampered
被篡改的原网页

向网页中的 HTML 标签中加入 rel="noopener" 属性可以让新打开的页面中的 window.opener 等于 null,使新的页面无法访问先前的页面。然而此项功能是可选的,并且依赖您访问的网站来添加此标签。Don’t touch my tabs! 扩展会自动在非同源链接后加上 rel="noopener" 来确保您的网页不会被此方法篡改。

Inserted Noopener
扩展自动在 HTML 标签里加入了 rel=“noopener” 属性


Firefox Private Network

FPN

Firefox 联合 Cloudflare 出品的代理扩展,目前仅在美国地区进行公测。如果需要加入公测需要 IP 地址在美国,可以通过代理或者 VPN 做到。早期加入公测的用户可以无限时地使用 FPN,但是新用户每个月仅可使用 12 小时。我很幸运在早期就了解到了这款扩展,所以目前可以无限白嫖使用。

Firefox Private Network 处于运行状态
Firefox Private Network 处于运行状态

在使用了此扩展之后,所有浏览器的流量将从 Cloudflare 网络代理,网站仅能看到 Cloudflare 节点的地址。

IPInfo 显示浏览器 IP 地址为 CloudFlare 的 IP
IPInfo 显示浏览器 IP 地址为 Cloudflare 节点 IP


Forget Me Not

Forget Me Not

Forget Me Not(勿忘我)是一款可以清理浏览器 Cookie、浏览历史、网站缓存等数据的扩展。您可以自定义清理规则,例如清理时忽略某个网站,或者 Firefox 启动时清理清理 Cookie 和 历史。您也可以把这款扩展当作 Cookie 自动清理器来使用,在离开某个网站 N 分钟之后自动删除该网站的 Cookie、Local Storage、历史等。

下面的截图中,*.mozilla.org(所有 mozilla.org 网页)的清理作业被全部忽略,自动和手动清理时就相应的不会清理 Mozilla 网站的数据。

Forget Me Not 网站规则
Forget Me Not 网站规则

下面的规则页面规定了何种数据应该在自动清理时被清除。

Forget Me Not 规则
Forget Me Not 规则


HTTPS Everywhere

HTTPS Everywhere

当用户访问某个网站并且没有指定使用不安全的 HTTP 协议还是使用安全的 HTTPS 协议时,EFF(电子前哨基金会)开发的 HTTPS Everywhere 扩展会自动判断目标网站是否支持 HTTPS,并且如果网页服务器支持 HTTPS 则自动跳转到 HTTPS 页面。

HTTPS Everywhere 原理
HTTPS Everywhere 原理

在此之上,HTTPS Everywhere 还能够强制仅加载支持安全连接的网页元素,所有不使用 HTTPS 加载的图片、脚本等元素全部都会被过滤。虽然这样做可以极大增强浏览的安全性,但是很有可能会让很多网站无法正常显示,所以此功能请谨慎使用。

HTTPS Everywhere 设置
HTTPS Everywhere 设置


LastPass

LastPass

LastPass 是一款较为著名及常用的密码管理器。使用密码管理器可以为每个网站生成、储存并填充非常复杂难记的密码。这样做的好处是可以避免您在某个网站的密码泄漏后该密码被用来尝试登陆您在其他网站使用相同密码的帐号。同时,密码管理器还可以节省记很多密码的麻烦。当切换到不同的设备时,只需要在该设备上登陆密码管理器即可自动填充所有网站的密码。LastPass 同时还有两款手机应用分别可以做到在手机管理和填充密码以及管理六位数的两步验证一次性密码。

LastPass 填充 Google 登陆信息
LastPass 填充 Google 登陆信息

与之相似的密码管理器还有 1Password 等,可以自行尝试各种不同的软件寻找最合适的密码管理器。


Privacy Badger

Privacy Badger

Privacy Badger 是一款可以自动学习并屏蔽跟踪器的扩展,同样为 EFF 所开发。与传统的跟踪器黑名单不同,Privacy Badger 通过观察域名的行为来自动学习哪些网页域名是跟踪器的域名并且自动屏蔽这些域名。

以下是 Privacy Badger 对 Microsoft Docs 某个页面显示的屏蔽设置,其中对 github.com 的规则是默认的自动屏蔽第三方 Cookie,而对已知为跟踪器的 www.google-analytics.com 域名则采取完全屏蔽。这些设置可以手动调整,也可以通过浏览让 Privacy Badger 自动学习。

Privacy Badger 设置
Privacy Badger 设置


Terms of Service; Didn’t Read

Terms of Service; Didn’t Read

相信很多人都在阅读部分网站的服务条款之前就盲目点击了 “我同意”,我也不例外。按道理说,这并不是一个好习惯,例如当您了解到 2019 年 Discord 在服务条款中加入了新的段落以防止您起诉 Discord 售卖您的数据时,您可能就像我一样不会那么想继续使用 Discord 了。原则上来说,用户既有阅读服务条款的义务,也应该阅读服务条款来判断是否应该使用某项服务。

然而,大多数网站和软件的服务条款都充斥着法律用语,极难阅读和理解。Terms of Service; Didn’t Read(TOSDR)这款扩展包含了许多网页简化版的服务条款,并给网站的条款打上一个评分,让您很容易就能了解该网站的服务条款是否对用户有利。

下图中展示的就是 TOSDR 显示的精简版的 GitHub 服务条款,详细地列出了条款中各个对用户有利和不利的款项,很容易就能看出该网站的条款中有哪些不足。同时,TOSDR 还给 GitHub 的服务条款打了一个 B 的评分,显示该网站的条款对用户较公平,但是仍有改进的空间。

Terms of Service; Didn’t Read 显示 GitHub 精简后的服务协议
Terms of Service; Didn’t Read 显示 GitHub 精简后的服务协议


uBlock Origin

uBlock Origin

uBlock Origin 是一款非常知名的广告屏蔽器,可以屏蔽网络上大部分的广告,让网站干净整洁。您可以自定义屏蔽列表,用自带的选取工具快速屏蔽某个网页元素,也可以用其自带的隐私保护功能保护浏览隐私。

(看下图背景猜我最近在玩哪款游戏)

uBlock Origin 状态页面
uBlock Origin 状态页面

使用 uBlock Origin 时,我个人有两个推荐设置,可以到 Settings > Privacy 中勾选 Prevent WebRTC from leaking local IP address 以及 Block CSP report 来开启额外的 WebRTC 防 IP 泄漏保护以及禁用 CSP 报告。

uBlock Origin 隐私设置
uBlock Origin 隐私设置

选择广告屏蔽器时常有的另一个疑问是:uBlock Origin 和 AdBlock Plus 这两款扩展哪个更好?3D Insider 对此做过一个详细的对比,总结来说就是 uBlock Origin 会使用更少的资源,并且默认屏蔽所有广告。AdBlock 不仅会使用默认资源,而且默认不屏蔽所谓的 “可接受广告”,所以仍会显示一部分广告。


uMatrix

uMatrix

uMatrix 可能是此篇指南中最硬核的一款扩展了,它可以让您自定义过滤每个网站上每个域名每种元素的加载。例如,您可以允许 Microsoft Docs 从 GitHub 加载图片,但是禁止其从 GitHub 加载脚本。除此之外,uMatrix 还可以伪造 Referer 字段以及 noscript 标签。

Microsoft Docs 页面上的 uMatrix 设置
Microsoft Docs 页面上的 uMatrix 设置

虽然此扩展极为强大,但是其使用也极其繁琐。您可能需要一段时间才能学会如何使用此扩展,并且每到一个新的网站甚至页面都要手动调整该页面应用的规则,否则页面就大概率无法正确加载,功能也无法正常使用。如果您像我一样愿意花额外的精力和时间来调试每个网页以保证隐私和安全,该扩展则是您不二的选择。


开发和实用性扩展

一款 Cookie 编辑器,相较于 EditThisCookie2 的好处是可以全局搜索 Cookie。

Dark Reader

浏览器的夜间模式扩展,我一般使用日间模式加上以下设定。同时需要注意一下这款扩展主要用 Filter、Static 和 Dynamic 三种模式,其中 Filter 模式最快,并且效果可观,但是可能让某些网站显示出错;Static 模式我个人并不喜欢用,因为效果很奇怪;Dynamic 模式虽说更不容易让页面崩坏,但是会显著提高页面加载速度,并且在开了很多标签页后会令浏览器卡顿。

DarkReader 设置

DownThemAll!

一款可以列出网页上可以下载的资源链接(图片,视频等)的扩展,和 Chrome 上被下架的 DownThemAll 扩展如出一辙。

EditThisCookie2

Cookie 编辑器,和 Chrome 上的 EditThisCookie 一模一样。

Export Tabs URLs

可以列出所有打开的标签页的 URL,批量复制标签页地址很方便。

FoxyTab

标签页增强扩展,可以右键标签页进行各种操作。

Get Website IP

显示当前网站的 IP 地址,省去了手动 DNS 查询,并且保证了在网站有多个 CDN 的情况下得到的 IP 地址和实际访问 IP 地址一致。

HTTP Header Live

实时监控所有 HTTP 请求的 Header 字段,并提供保存功能。

HackBar

提供了在渗透测试时会使用到的各种功能,例如添加自定义 Referer 字段/Cookie/User-Agent、计算 MD5/ROT13/URL/Base64 编码等。

Multithreaded Download Manager

多线程下载器,在下载大文件时使用多线程下载,极大提高通量(throughput,有时也被松散翻译为带宽)利用率。

Offline QR Code Generator

离线 QR 码生成器,可以快速生成当前 URL 的 QR 码或者任意内容的 QR 码,需要从桌面电脑分享网址给身边的朋友的时候非常好用。该扩展也有更高级的使用方式,例如根据 ISO/IEC 18004:2015 标准手动生成 Wi-Fi QR 码等。

Proxy SwitchyOmega

Chrome 上著名的代理管理软件的 Firefox 移植版本。

SingleFile

将整个网页保存为一个 HTML 文件并且完整保留网页的原貌。

Tamper Data for FF Quantum

网页请求篡改器,可以拦截并篡改任意 Firefox HTTP 请求。

Tampermonkey

人尽皆知的网页脚本框架,可以从 Greasyfork 等网站安装各类脚本来自定义网页。

Tweak New Twitter

Twitter 简化扩展,可以让 Twitter 通过时间顺序显示 Tweet、删除 “Trends” 版块、分开显示 Tweet 和 Retweet 等。目前该扩展还在早期开发阶段,不是非常稳定。

User-Agent Switcher and Manager

快速切换 User-Agent,在很多时候非常好用,例如用 Windows 的 UA 访问 Windows 下载页面,则页面会显示下载升级工具的链接;而将 UA 改为 Linux 之后,即可显示下载 Windows ISO 镜像的链接。

Wappalyzer

非常强大的网页框架识别扩展,可以识别网页后端使用的服务器操作系统、开发框架等。例如下图中 Wappalyzer 就例举出了 Twitter 使用的框架等信息。

Wappalyzer 显示 Twitter 框架和其它信息
Wappalyzer 显示 Twitter 框架和其它信息

Web Developer

十分强大的网页开发辅助工具,可以对页面进行各种调试,也可以在申请软件试用的时候通过 Populate Form Fields 功能自动填充表单

Web Developer 主界面
Web Developer 主界面


最后修改于 2020-07-02