一、 浏览器指纹描述
2010年,电子前沿基金会(EFF)一项研究发现,绝大多数的网络浏览器都可以让用户留下独特的“指纹”,而这些指纹会被用于跟踪用户上网冲浪。这一“指纹”也被称作“浏览器指纹”。 浏览器指纹将用户的浏览器类型、屏幕尺寸与颜色深度、浏览器插件、默认时区设置、用户安装的字体等作为特征参数,全境通海外仓,通过朴素的字符串匹配方式识别指纹。同时浏览器指纹可以准确识别浏览器;而且,对于安装了Flash和Java的设备中,浏览器指纹的识别率更高达94.2%。
在Peter Eckersley论文中首次完备地阐述了浏览器指纹的采集、识别、变化跟踪等方法,证明了浏览器指纹技术在不使用Cookie等存储机制的情况下可以有效地区分和跟踪用户。
[1] 浏览器指纹的出现,即可以给我们的生活带来便利,又给个人隐私的泄露埋下了隐患: 一方面,浏览器指纹可以用于身份认证,帮助Web应用服务商更好得辨别用户身份,更好地保护用户信息;浏览器指纹也可以更好地帮Web应用服务商完成统计,美国海外仓,利用统计结果优化其应用,提升用户体验;同时,分析不同用户的行为习惯可以帮助广告商更有针对性地投放广告,以便帮用户更准确地找到用户需要的东西。
[2] 另一方面,现在已经有很多研究者开始担忧浏览器指纹技术对于用户隐私构成的威胁[3],同时也探讨了浏览器指纹技术对于用户隐私的影响情况。例如Nikiforakis等人详尽分析了三家浏览器指纹公司提供的技术和适用场景
[3]。Wills等人证明了如果可以采集到足够多的用户浏览历史,就可以准确推断每个用户的年龄、性别、婚姻情况、收入情况等
[4]。 因此,浏览器指纹可以改生活带来一定的遍历,但也存在隐患。在现实生活中浏览器指纹不应该被无限制地使用,也不应该被完全禁用,或者说,浏览器指纹的使用需要被限制。
二、 浏览器指纹解决原理
浏览器指纹获取的特征参数具体包括:User Agent,时区、屏幕信息、语言设置、浏览器中安装的插件列表、系统安装的字体、地理位置、MIME Type列表、移动设备加速器和陀螺仪的噪音信号、Canvas/Web Font/WebGL的实现
[2]。 获取浏览器指纹最简单的的方式是直接使用Fingerprintjs[5]:利用Fingerprintjs计算出浏览器指纹后使用ajax将指纹信息传回服务器,这样就可以在用户不察觉的情况下使服务器获取到浏览器指纹。比较复杂的方式也有传统的木马植入、病毒软件等。 虽然获取浏览器指纹的方式众多,但是只要限制与浏览器指纹相关的特征参数的获取,就能从源头上限制浏览器指纹的获取,但是要实现这一点还是比较难的。
首先,有些信息是无法被限制掉的,如HTTP报文中必需的字段,比如User-Agent、Accept-Encoding、Accept-Charset、Host,这些参数并不足以计算出浏览器指纹,但是它们却是浏览器指纹的重要特征参数。服务器需要这些参数来辨别浏览器、保证页面的显示效果等。在一定程度上,浏览器指纹产生也是HTTP本身的缺陷的体现
[6]。 其次,限制浏览器特征参数的获取,需要相应软件的支持,最基本的就是浏览器的支持。目前有的研究者们为了限制浏览器指纹的获取,设计出了FPDetect系统
[7]。该系统使用修改过的Chromium浏览器。该浏览器会记录网站中存在的脚本对于浏览器指纹检测中经常使用的接口的调用,例如对于的navigator.plugins调用。在CasperJS和Selenium的驱动下,该系统可以自动化的检测网站是否有使用浏览器指纹技术跟踪用户的行为。 其他的限制浏览器指纹的方法还包括使用Tor网、使用浏览器的隐私模式等。
目前,网上有人提出“多实例”、“多浏览器”、“多虚拟机”、“动态User Agent”等方式避免浏览器指纹的影响
[8]。这些方式都是通过修改User Agent字段来防范浏览器指纹。虽然一般情况下修改User Agent字段不会影响到浏览器的正常使用,但是这些方式给使用者带来了很大的不便,也影响到正常获取浏览器指纹的应用,并没有达到限制浏览器指纹的目的。
三、 总结 笔者认为,最能从根本上解决问题的方式是像FPDetect系统那样,设计一个浏览器,监测、记录网站中与浏览器指纹相关的脚本的调用,自动检测网站是否有使用浏览器指纹技术跟踪用户的行为。同时设置权限管理,全境通海外仓,某个站点需要获取浏览器指纹的时候,在用户同意之后将站点加入信任列表,同时用户的浏览器指纹发生改变之后也可以及时得得以更正,提高安全性。
当然,还可以使用巨象指纹浏览器修改或者伪装指纹。
巨象指纹浏览器指纹保护·独家首创的面具指纹, 为多账号防关联而生的指纹浏览器。