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

标签: 编程技术 | 发表时间:2015-10-15 11:00 | 作者:techug
分享到:
出处:http://www.vaikan.com

如果你认为 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 Wiki和Wikipedia上有设备识别的精确描述。

客户端的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,对进行指纹识别的用户很有用。
权益,请及时联系我们

相关 [html apis 跟踪] 推荐:

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

- - 外刊IT评论
如果你认为 IP 地址、cookies 和 HTTP 头是在 web 上唯一标识和跟踪用户的要素的话,那么你就大错特错了. 新的现代化特征辨别技术依赖于以下多种要素:. HTTP 头(用户代理, 参考页等). HTML5 APIs(WebRTC, Battery API等). HTML5 和 CSS3 特征检测.

20 个对开发者非常有用的 Google APIs

- Abel - ITeye资讯频道
Google 网站有各种各样的功能,多数功能都对外提供了 API 供访问,我们可以利用这些 API 来丰富自己的网站功能,比如 Google 地图 API 可为你的网站增加了地图功能,翻译 API 可增加翻译功能等等. 下面是20个对开发者和设计者非常有用的Google的 API. 感谢 wangguo 投递这篇资讯.

Google不想与甲骨文争了,要放弃Java APIs

- - 雷锋网
与Android崛起相伴的其实还有战争,而其中最重要且最有争议性的,恐怕就是甲骨文和Google的官司了. 自2010年起,两家公司关于Android系统的一部分是否侵犯了甲骨文的版权和专利,一起争论不休,因为系统中使用了甲骨文拥有的Java. 但Google似乎有些乏了,于是决定从下一代的Android N(应该会在2016年发布)开始,系统将不再使用Java APIs.

HTML 安全列表

- 火锅土豆 - 酷壳 - CoolShell.cn
下面这个网站罗列了,几乎所有的关于HTML 5 在各种主流浏览器上的安全问题,这些安全问题很有可能将会是黑客攻击你的网上的敲门砖,他们几乎都和Javascript都有关系,你就要好好注意了. IE6,7,8,9,和Opera 8.x, 9.x, 10.x 都支持这样的语法. 这个问题会存在于所有的Firefox版本中,可以让用户进行XSS(跨站脚本)攻击.

HTML学习笔记

- - CSDN博客推荐文章
超文本标记语言( 英文:HyperText Markup Language,HTML)是为“ 网页创建和其它可在 网页浏览器中看到的信息”设计的一种 标记语言. HTML被用来结构化信息——例如标题、段落和列表等等  点击打开链接. w3schools  点击打开链接 {语法大全,超赞.

html嵌套规则

- - Web前端 - ITeye博客
转载: http://www.studyofnet.com/news/412.html. 一、HTML 标签包括 块级元素(block)、内嵌元素(inline). 一般用来搭建网站架构、布局、承载内容……它包括以下这些标签:. 一般用在网站内容之中的某些细节或部位,用以“强调、区分样式、上标、下标、锚点”等等,下面这些标签都属于内嵌元素:.

Html 转换成PDF

- - 编程语言 - ITeye博客
最近在搞一个关于html转换为pdf的需求,网上找了很多,但是如果批量处理就会出现问题,最后找到了PD4ML,解决了我的问题. String urlstring = "file:///D:/债权转让及受让协议--魏然2014-08-16.html";. 需要在src目录下创建fonts文件夹,并且在文件夹中建立pd4fonts.properties ,配置文件中的内容如下.

HTML+CSS小结 - jessies

- - 博客园_首页
   结构   HTML        .    样式   CSS      .    行为   JavaScript(交互行为).    <meta name="参数" content="name属性值"/>.    <title>网页标题</title>.

HTML head 头标签

- - IT技术博客大学习
HTML head 头部分的标签、元素有很多,涉及到浏览器对网页的渲染,SEO 等等,而各个浏览器内核以及各个国内浏览器厂商都有些自己的标签元素,这就造成了很多差异性. 移动互联网时代,head 头部结构,移动端的 meta 元素,显得更为重要. 了解每个标签的意义,写出满足自己需求的 head 头标签,是本文的目的.

动态绑定HTML

- - 破狼 Blog
在Web前端开发中,我们经常会遇见需要动态的将一些来自后端或者是动态拼接的HTML字符串绑定到页面DOM显示,特别是在内容管理系统(CMS:是Content Management System的缩写),这样的需求,更是遍地皆是. 对于对angular的读者肯定首先会想到ngBindHtml,对,angular为我们提供了这个指令来动态绑定HTML,它会将计算出来的表达式结果用innerHTML绑定到DOM.