如何保护隐私[2]:关于浏览器的基本防范(上)

2013-06-29IT IT.信息安全

  本系列的前一篇博文,俺介绍了选择“软件”和“服务”的一般性原则。
  从这篇开始,俺会花3篇博文的口水来介绍一下浏览器的基本防范。因为在个人软件中,虽然有很多软件跟隐私关系密切,但“浏览器”的牵扯的面最广。


★浏览器本身导致的隐私问题


◇浏览器自身如何泄漏隐私?


  先来谈浏览器【自身】是如何泄漏隐私的。这里强调的是【自身】,也就是说,跟浏览器外围的插件、扩展、cookie 等等无关,是浏览器软件自己把用户隐私给泄漏了。
  很多国产的浏览器(至少包括:奇虎的“360浏览器”、腾讯的“QQ浏览器”、百度的“百度浏览器”)自身都存在严重的隐私问题。它们会收集用户的上网行为(比如:你在啥时候访问了啥网站),并且把你的上网行为保存到它们自家的服务器上。
  一旦你用了有危险的浏览器,即使你在其它方面的防范做得再好,也是白搭。因为浏览器是上网冲浪的关键,浏览器出问题会导致你的隐私防御全线崩溃。

  稍微跑题,说一下当年轰动武林的“3Q大战”。(因为前两天有读者在博客留言中争论此事)
  这件事说白了就是【狗咬狗 一嘴毛】,“奇虎、腾讯”都不是好东西,它俩不但充当朝廷的走狗,而且不择手段收集用户隐私。但是“3Q大战”的积极意义在于:两只癞皮狗互咬,把两边的家丑都曝光了。咱们普通网民作为旁观者,可以更清楚这些国产软件厂商的嘴脸。
  再强调一下,有问题的国产浏览器,绝不止这两家。

◇应该如何选择?


  刚才说了,国产浏览器猫腻很多。那么国外的浏览器,是不是就很安全捏?也未必。
  大伙儿不妨复习一下前一篇博文。在那篇博文中,有两个原则可以参考:
原则1:开源 好过 闭源
(开源软件,即使有后门或流氓行为,也比较容易被发现)
原则2:非营利组织 好过 商业公司
(对于大型商业公司,收集用户信息会带来商业利益,所以商业公司有收集隐私的热情)

  国外的浏览器,名气大且使用广泛的,主要有三款:Firefox、Chrome(Chromium)、IE。其中,Firefox 和 Chromium 是开源的,Chrome 和 IE 是闭源的。
  很多人都误以为 Chrome 是开源的。虽然 Chrome 是基于开源的 Chromium,但是 Chrome 包含闭源的模块。所以严格来讲,Chrome 只能算【部分开源】。
  根据“原则1”(开源角度):这几款浏览器的隐私安全性如下
Firefox = Chromium > Chrome > IE

  再来看这几个浏览器的后台。IE 的 后台是微软公司、Chrome/Chromium 的后台是 Google 公司,Firefox 的后台是 Mozilla 组织
  根据“原则2”(商业角度):这几款浏览器的隐私安全性如下
Firefox > Chromium = Chrome = IE

◇隐私方面,为啥 Firefox 优于 Chrome?


  先声明,本小节介绍的是两款浏览器在“隐私保护”方面的对比;至于安全性(防范骇客入侵)方面的对比,请看俺的另一个系列《如何防止黑客入侵》。
  俺博客的读者中,有相当数量的 Chrome 用户。估计很多人会为 Chrome/Chromium 打抱不平。所以,再从商业模式的角度分析一下,为啥 Chrome/Chromium 的隐私保护不如 Firefox。
  稍微熟悉 Google 的同学应该知道,Google 的大部分利润(90% 以上)来自于“在线广告”这个业务。要想做好“广告”这门生意,最关键的是——做到“精准投放广告”。而要想实现精准投放,自然要收集用户信息(只有当 Google 对某网民足够了解,才能知道该网民会对哪些广告感兴趣)。而这就涉及到隐私问题。
  反之,Mozilla 是非营利组织,不像 Google 那么依赖广告客户。所以 Firefox 就可以放开手脚去防范隐私泄露。

  举例——浏览器对 Do Not Track 的支持
  Do Not Track(简称 DNT,中文叫“请勿追踪”),维基百科的词条在“这里”。是一项浏览器功能,用来告知网站,用户不希望被追踪。
  以下是各个知名浏览器加入 DNT 功能的时间表。
Firefox2011年1月第一个支持 DNT 的浏览器
IE2011年3月 
Safari2011年4月 
Opera2012年2月 
Chrome2012年11月在主流浏览器中,支持最晚!
比 Firefox 晚了将近2年
  用 Chrome 的同学都知道,Chrome 是频繁发布新版本的,而且 Google 的研发力量是很强大滴。那么,为啥 Chrome 拖了这么长时间才支持 DNT 功能,显然不是因为技术原因,而是因为商业原因——Google 不愿意得罪广告客户。

◇小结


  综上所述,在隐私保护方面,Firefox 是首选。
  补充说明:在本文发布5年之后,俺又写了另一篇博文(如下),继续讨论 Firefox 与 Chrome/Chromium 的对比。
弃用 Chrome 改用 Firefox 的几点理由——关于 Chrome 69 隐私丑闻的随想


★“浏览历史”导致的隐私问题


  本章节提及的“浏览历史”,至少包括如下几个方面的信息:
网址的历史
下载的历史
页面缓存
各种 Cookies

◇“浏览历史”如何泄漏隐私?


  举例:
  假如你是一个年轻男网民,喜欢访问成人色情网站。然后捏,你又不注意清除浏览器的历史缓存。或许有一天,你的女朋友或者你的父母无意中打开你的浏览器,就会发现你的癖好。那你就尴尬了。

◇“隐私浏览模式”的用处


  如今,几款主流的浏览器(Firefox、Chrome、IE)都已经支持“隐私浏览”功能。
  你在“隐私浏览模式”下进行的上网行为,浏览器【不会】保存相应的“浏览历史”。当你退出“隐私浏览模式”或者关闭了浏览器之后,这些信息就不见了。

◇“隐私浏览模式”的局限性


  插件导致的问题
  但是,“隐私浏览模式”并【不是】足够安全滴!如果你的浏览器安装了插件(比如 Flash),可能会导致“隐私模式”【部分失效】。
  因为浏览器插件不受浏览器的控制。所以,即使在“隐私模式”下,某些插件还是可能会留下上网痕迹。
  本文的下一章节会介绍,插件如何导致“隐私模式”部分失效。

  书签导致的问题
  另一个局限性是:对于大部分浏览器(比如 Firefox、Chrome),隐私浏览期间对书签的修改,会被保留下来。可能有些同学没有意识到这里面的风险。俺举个例子。
  举例:
  你在隐私浏览模式下,访问某个敏感的网站。浏览网页的时候,你不下心点了 Ctrl + d 组合快捷键,然后浏览器就把当前页面加入书签。退出“隐私浏览模式”之后,这个书签还在哦。然后,假如你周围的人一不留神看了你的书签,就看到你曾经上过某敏感网站。

◇更彻底地解决浏览历史——使用虚拟机


  假如你对“隐私浏览模式”的局限性,很在意。解决方法之一就是:使用操作系统虚拟机。
  如果你不熟悉操作系统虚拟机,请先看俺写的《扫盲操作系统虚拟机》系列博文。
  使用虚拟机,大致的操作步骤如下:
1. 先安装虚拟机软件,然后装一个虚拟操作系统(Guest OS)
2. 在 Guest OS 中安装好上网相关的软件(比如浏览器、插件、等)
3. 在没有访问任何网站之前,先做一个 Guest OS 的快照(这是一个干净的快照)
4. 在这个 Guest OS 里面上网
5. 上网结束后,回退到这个干净的快照
  通过上述步骤,就可以避免在电脑中留下任何上网的痕迹。由于虚拟机是操作系统级别的,即使是浏览器插件,也不会留下痕迹。


★浏览器插件导致的隐私问题


◇“插件”与“扩展”的区别


  先来扫盲一下插件和扩展的区别(连很多 IT 技术人员都把这两者混为一谈)。所谓的插件,洋文叫“plugin”;所谓的扩展,洋文叫“extension”。两者的区别如下:

  插件
  在功能上,插件通常是用来渲染页面里的 <object><embed> 标签。
  插件通常用操作系统的本地代码(也叫“原生代码”)编写,可以调用操作系统的 API。形式上,插件以动态库(Windows 上就是 DLL 文件)的方式,加载到浏览器的进程内。由于使用本地代码编写,插件通常依赖于特定的操作系统(不同系统的插件不能混用)。

举例:
Flash 插件
媒体播放器插件
PDF 插件
Java 插件
各种网银控件

  扩展
  扩展,顾名思义,是用来扩展浏览器自身的功能。所以,扩展可以调用浏览器自身的 API,但是扩展通常不能调用操作系统的 API。
  一般来说,扩展是跟操作系统无关的。比如 Firefox 的大部分扩展,既可以用于 Windows 平台的 Firefox,也可以用于 Linux 和 Mac OS X 的 Firefox。

举例:
俺推荐的 GreaseMonkey,就属于扩展。

◇插件的隐私问题


  刚才说了,插件是用本地代码编写的,调用的是操作系统的 API。所以,插件的行为浏览器是无法控制的。相对而言,扩展调用的是浏览器的 API,所以扩展的行为,浏览器是比较可控的。
  下面,俺就拿 Flash 的 cookie 来举例,让大伙儿看看插件导致的隐私问题。

  举例——Flash 的 cookie
  平时大伙儿提到 cookie,说的都是浏览器的 HTTP Cookies;但是除了浏览器,插件也可能有自己的 cookie——比如最流行的插件 Flash 就有自己的 cookie 功能。
  Flash Cookies,专业术语叫做“Local shared object”。网页中加载的 Flash 对象可以利用这个功能,在你的操作系统中保存一些信息。所以,Flash Cookies 跟“HTTP Cookie”一样,都可能带来某些隐私问题。

  从上述例子可以看出,插件也可以在操作系统中留下自己的一些痕迹(不妨称之为“插件的 Cookie”)。而且“插件的 Cookies”比“HTTP Cookies”更讨厌的地方在于——它是独立于浏览器 cookie 的。这就导致如下两个隐私问题:
1. 当你在浏览器中清空 HTTP Cookies 的时候,插件的 cookie 【不会】受影响;
2. 浏览器的“隐私模式”会限制 HTTP Cookies 的永久保存,但是浏览器无法限制插件的 cookie(这就是俺刚才提到的“隐私浏览模式”局限性)

  注:从 Flash 10.3 开始,Adobe 已经通过技术手段,解决了 Flash Cookie 与浏览器的整合问题。也就是说,浏览器在清除 HTTP Cookies 的同时,也清除了 Flash 的 Cookies。但是,其它的插件【有可能】依然存在上述问题。

◇如何防范插件留下的痕迹?


  办法由两个:
办法1
最直接的办法就是:你的浏览器不要装任何插件。
办法2
如果你不得不装一些插件,那么还有一招——利用虚拟机的快照功能。这个方法刚刚讲过,就不再啰嗦了。

  今天先聊到这里,下一篇接着说说浏览器的 HTTP Cookie。


回到本系列的目录