设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

HTML 5 APIs是如何跟踪用户轨迹的

2015-9-13 15:51| 发布者: joejoe0332| 查看: 1308| 评论: 0|原作者: 海涛, shirleywong, 无若, leohxj, sikkx|来自: oschina

摘要: 如果你认为 IP 地址、cookies 和 HTTP 头是在 web 上唯一标识和跟踪用户的要素的话,那么你就大错特错了!新的现代化特征辨别技术依赖于以下多种要素: …… ...

  如果你认为 IP 地址、cookies 和 HTTP 头是在 web 上唯一标识和跟踪用户的要素的话,那么你就大错特错了!


  新的现代化特征辨别技术依赖于以下多种要素:


  • IP地址

  • Cookies

  • 语言

  • 时区

  • HTTP 头(用户代理, 参考页等)

  • HTML5 APIs(WebRTC, Battery API等)

  • HTML5 和 CSS3 特征检测

  • CSS 媒体查询

  • WebGL

  • 浏览器插件(Flash, Silverlight, Java等)

  • 浏览器加载项

  • 浏览器选项(阻止浏览器追踪等)

  • 浏览器存储

  • 系统字体

  • TLS/SSL 会话ID

  • 硬件检测(摄像头,麦克风,触摸屏等)

  • 屏幕(分辨率,色彩深度,像素等)

  • 音视频编解码器

  • 装配特征


  最近 W3C 在 HTML 标准中允许开发者与用户设备通讯,以增强网页、App 和游戏设置。很多 API 被开发出来以便更精准的辨别用户身份已不足为奇。


什么是指纹特征呢?

  想象一下,当你走进一家商店入口处,一个高级的摄像头对你进行扫描,然后保存你的相关信息,如:体型、身高、肤色、服饰、鞋子、走路姿态、语调等。所有这 些数据将被排成一个序列,然后通过一个哈希函数来计算你的特征图谱。下次你再来到这家商店或属于相同机构的其他商店时,通过快速分析你的特征,即使你着装 风格不同,也能将你与之前访问的那个人联系起来。


  使用浏览器访问网页也同样如此(不需要用户做任何特别的操作)。无论你尚未登录或者禁用 cookies,它都可以将用户与一个标识联系起来,它还不是百分之百的准确但一直在改进。


  电子前线基金会(Electronic Frontier Foundation)在出版的“Web浏览器如何独特?”(PDF)一文中研究了浏览器的用户跟踪。WebKit WikiWikipedia上有设备识别的精确描述。


客户端的JavaScript

  如果你想对指纹特征有更好的了解,可以查询一下 web 开发者专用的 JavaScript 库:Fingerprintjs2


  要想有效地防止识别指纹特征的脚本运行,你可以通过阻止全局 JavaScript 的运行来实现,又或者使用NoScript 或者 uMatrix 拓展。但还有很多因素会暴露过多与你相关的信息,并且会继续保存在其他未知的指纹特征方式中。


HTML5 APIs


  得益于新型的 HTML5 标准,开发者在某些情况下不需请求批准,就有有权限去获得和检测的用户信息或硬件设备。以下的 API 仍处于无监管下被滥用。要避免这种情况,最普遍的方法是禁止 JavaScript 运行,或者使用特殊的加载项。


Canvas

  这是令人讨厌,隐秘和(启用 javascript)几乎就不可停止的技术,从 2012 年以来就积极被利用,在广泛使用的脚本(记得添加这个 “探索”找到替代品放到 cookies 中)中偶尔嵌入。


  当浏览器访问一个网页是一个 canvas 的指纹脚本,它就被要求去绘制一个隐藏的图形并转换为一个令牌。令牌的独特性等因素取决于浏览器,操作系统和安装的图形硬件。


  为了避免 Canvas 指纹你可以:

  • 显示全局 javascript

  • 使用 NoScript, uMatrix 或者CanvasFingerprintBlock (仅Chrome支持) 扩展

  • 使用 Tor 浏览器


电池

  由于检测电池状况的 API 能够获得设备电池的充电时间和放电时间。这些数据一旦结合起来就会近似于每个设备和电池状态的特征,成为网络中跟踪活动的潜在因素。


  一篇名为《正在泄露的电池——对 HTML 5电池信息 API 的隐私调查》的 论文针对 Linux 系统上的 Firefox 浏览器用户进行了调查。其中最深刻的研究结构是:“我们打算对电池状态 API 进行小改造,并在 Firefox 浏览器里运行,去定位调查中的隐私流出。后来,我们给 Firefox 的漏洞汇报被接受了,而且开始修复漏洞。


  在 Chrome 浏览器,你可以安装名为 Battery Info Blocker 的加载项去禁止网站获取你的电池信息。


WebRTC(Web Real-Time Communication,网页实时通信)

  当你不使用 WebRTC 时,应当禁止它。WebRTC 不仅会泄露你的本地 IP 地址,还会在 VPN 上泄露你的 IP 地址(在 Windows 系统下),这不同于采集系统的指纹特征的因素


  为了避免 WebRTC 泄露你的隐私,应该使用 Firefox 浏览器并且禁止 WebRTC,这可以通过打开about:config,找到值为 media.peerconnection.enabled 的项并且设置成 false


  在 Chrome 中,你可以安装名为 WebRTC 的加载项,否则会发生隐私泄露。


资源时序

  开发者能够使用 API 去收集完整的与文件资源有关的时序信息。在 Working Draft 中有表达对隐私的担忧:“统计性的指纹特征是一种对隐私的担忧,恶意网站会通过检测浏览器缓存的时序信息,包括访问和忽略第三方网站的资源,来判断使用者是否访问过第三方网站“


  如果你使用 Firefox 浏览器,可以通过打开 about:config,并且把选项 dom.enable_resource_timing, dom.enable_user_timingdom.performance.enable_user_timing_logging 设置为 false,来阻止这些 API 运行。


  在 Chrome 浏览器下,唯一的办法是禁止 JavaScript 脚本运行。


Geolocation(地理位置)

  如果使用这个功能,它会泄露你的物理位置,侵犯你的隐私。现代浏览器总是询问许可来泄露地理位置给网站和 app。


  在 Firefox 上禁用这个功能,你应该在地址栏上输入 about:config,找到 geo.enabled 的值,设置其值为 false。


  在 Chrome 点击设置(Settings),从显示高级设置(Show advanced settings)上,找到隐私(Privacy)并且点击内容设置(Content settings), 在窗口里找到定位(Location)并设置选项不允许任何网站追踪你的物理位置(Do not allow any site to track your physical location)。


硬件指纹识别

  一篇名为 “Hardware Fingerprinting Using HTML5” 的论文(PDF)提到,有一项新的潜在的技术,它基于与硬件设备通信的能力,来获取特定的硬件指纹,作为对基于软件的指纹(浏览器,操作系统,等)的补充。


  这篇论文提到,例如 GPU(现代浏览器使用硬件来加速),摄像机,扬声器,麦克风,运动传感器,GPS 和电池等硬件,都可以被 HTML5(未必需要用户许可)访问,尤其是 GPU,对进行指纹识别的用户很有用。


链接

设备指纹识别
https://en.wikipedia.org/wiki/Device_fingerprint

什么是设备指纹识别
https://trac.webkit.org/wiki/Fingerprinting

EFF: 你的网络浏览器到底有多特别? (PDF)
https://panopticlick.eff.org/browser-uniqueness.pdf

EFF: Panopticlick测试您的浏览器,看看它有多特别
https://panopticlick.eff.org

网络不会遗忘:疯狂的持续跟踪机制
https://securehomes.esat.kuleuven.be/~gacar/persistent/

HTML 5的电池状态 API 的私密性分析
https://eprint.iacr.org/2015/616.pdf

资源定时 API 工作草案
http://www.w3.org/TR/resource-timing

使用 HTML 5 进行硬件指纹识别
http://arxiv.org/abs/1503.01408

浏览器漏洞和网络浏览器的指纹识别
http://browserleaks.com

现代的&灵活的浏览器指纹识别库
https://github.com/Valve/fingerprintjs2


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部