`

基于浏览器的客户跟踪技术概述

阅读更多

转自:出家如初,成佛有余

有人问起:在用户浏览器不安装插件的情况下,有什么好的手段来跟踪并识别用户身份的唯一性,防止在诸如匿名投票中用户重复点击。

大致整理了一下思路,目前用于跟踪识别用户身份大致采用如下一些方案:

1、在用户浏览器安装诸如Activex、Applet插件来跟踪用户

通过Activex、Applet插件来获取用户PC的CPU序列号、硬盘ID、网卡MAC地址等信息来唯一识别用户身份。

优点: 由于CPU序列号、硬盘ID、网卡MAC地址等不会经常变动,因此获取的用户信息相对真实且唯一

缺点: 需要用户手动安装插件,在这木马盛行的年代,用户对安装这样的插件都较为敏感;由于像Firefox、Chrome、Safari、Opera这样的浏览器并不支持Activex;对于Applet这样的末路黄花让用户安装更加不靠谱。

2、采用Flash Cookies(Local Shared Object )技术来跟踪用户

Flash Cookies或者是Local Shared Objects利用了Flash的SharedObject 对象,其功能与浏览器中的cookies作用类似,可以用来存储相关的信息。

优点:

    Flash插件的广泛性,应该95%以上的浏览器都安装了Flash插件,能够较好支持Firefox、Chrome、Safari、Opera等浏览器;
    Flash Cookies相对于浏览器Cookie可以存储更多的数据,普通浏览器的cookies不能储存超过4K的资料,而Flash cookies则能储存达100K;
    Flash Cookies的跨浏览器,Flash Cookie可以跨Firefox、Chrome、Safari、Opera,用户在同一台PC用多个浏览器访问同一网站(同一个domain)后,Flash Cookies都一样,因此可以唯一识别一台PC。
    清除或禁用浏览器Cookies时候,不会影响Flash Cookies。
    因此Flash Cookie是一个较好跟踪用户的手段,值得推荐。
   
  按照Wikipedia
的说法,查看一下自己的操作系统Flash cookie的存储路径,可以看到包括:google.com,macromedia.com,msn.com,yahoo.com,ebay.com等都采用了类似的方案。
    尽管用户也可以安装诸如BetterPrivacy
 这样的插件或手工直接删除FlashCookie,但目前而言,知道Flash Cookie的用户较少。

3、通过HTTP Cookie来跟踪用户

    优点
:大部分浏览器都支持,不需要任何单独插件
    缺点
:在同一台PC上,不同的浏览器有不同的Cookie;Cookie很容易被用户手工清除或禁用;

4、通过IP地址来跟踪

   优点
:直接在服务器端获取,不需要客户端任何支持
   缺点
:对于在局域网内通过了NAT地址转换及使用了Proxy的用户,通过所获得的IP地址并不是很准确,不能正确识别同一个用户。

5、类HTML5的客户端本地存储方案

   HTML5规范提供了浏览器本地存储解决方案,这篇文章
总结了各种浏览器所采用的类似于HTML 5的本地存储方案(不一定与HTML5 兼容)
  Firefox 3.5, Safari 4, IE8:
 
HTML5 localStorage

; these modern browsers all support the core localStorage functionality defined in the HTML5 draft. 
  Firefox 2.x and 3.0
: 
Gecko globalStorage

, a very early implementation similar to HTML5’s localStorage. 
  Safari 3.1 & 3.2
: 
HTML5 Database Storage

, because Safari 3.1 and 3.2 don’t support HTML5 localStorage. 
  IE6, IE7
: 
userData persistence

, a rarely used IE feature for associating string data with an element on a web page and persisting it between pageviews. 
  Google Chrome
: 
Gears Database API

, which is built into Chrome and thus doesn’t require a separate install. Surprisingly, Chrome doesn’t yet natively support any form of HTML5 Storage.

6、客户端本地存储方案

   基于各种浏览器客户端本地存储机制的问题,一些项目提供了客户端的本地存储机制,包括:PersistJSDojo StorageGoogle GearsTaffy DBYUI Storage Utility
等。
   这篇文章
对这些机制做了比较好的总结:
Dojo Storage

 * 优点:配备的文档较全,有较大的用户基础
 * 缺点:如果安装有Flash插件,只对Internet Explorer进行支持
 * 缺点:不支持基于WebKit的浏览器 (像Safari)
 * 缺点:运行时还需要其他Dojo库

 Google Gears

 * 优点:有Google作支持,像Dojo一样,配备的文档较全
 * 缺点:还没有广泛部署
 * 缺点:插件没安装就不能运行

 相比较而言,PersistJS项目试图对各种浏览器的本地存储机制进行封装,保证了API的一致性,是什么让PersistJS更好?

 * 很小(gzip压缩之后只有3k)
 * API一致,与所用浏览器无关
 * 无须浏览器插件和其它库
 * 当所用浏览器不支持时,会退而使用cookie
 * 声称支持IE、Firefox和Safari的新版本

Trying to address the need for client-side storage sans browser-specific techniques or browser plugins, Paul has created an abstraction layer that allows developers to use most of the most common client-side storage mechanisms via a common interface. It currently supports persistent client-side storage through the following backends:

  • flash: Flash 8 persistent storage.
  • gears: Google Gears-based persistent storage.
  • localstorage: HTML5 draft storage.
  • whatwg_db: HTML5 draft database storage.
  • globalstorage: HTML5 draft storage (old spec).
  • ie: Internet Explorer userdata behaviors.
  • cookie: Cookie-based persistent storage.

Other notables features include:

  • Small (9.3k minified, 3k gzipped)
  • Standalone: Does not need any additional browser plugins or
    JavaScript libraries to work on the vast majority of current
    browsers.
  • Consistent: Provides a consistent, opaque API, regardless of
    the browser.
  • Extensible: Custom backends can be added easily.
  • Backwards Compatible: Can fall back to flash or cookies if no
    client-side storage solution for the given browser is available.
  • Forwards Compatible: Supports the upcoming versions of Internet
    Explorer, Firefox, and Safari (Opera too, if you have Flash).
  • Unobtrusive: Capability testing rather than browser detection, so
    newer standards-compliant browsers will automatically be supported.

这样看来,采用PersistJS(或YUI Storage Utility ,但YUI包还是太沉)是最优的方案,其次是Flash Cookie,然后是Cookie+IP的方案。

7、参考资料:

    http://en.wikipedia.org/wiki/Local_Shared_Object
    http://pablotron.org/?cid=1557

    http://developer.yahoo.com/yui/storage/

    http://www.infoq.com/news/2008/05/persistJS
    http://www.infoq.com/cn/news/2008/06/persistJS
    http://wonko.com/post/search-pad-browser-storage
    http://www.qgy18.com/2008/05/localstorage/
    http://safe.csdn.net/n/20091103/5083.html
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    agile-proxy-client:基于浏览器或 nodejs 的客户端,用于在测试等中访问敏捷代理服务器。

    基于浏览器或 nodejs 的客户端,用于在测试等中访问敏捷代理( )服务器。 概述 如果您不熟悉敏捷代理,请参阅 ( ) 以了解更多信息。 总之,它甚至允许跨进程(例如 selenium 或浏览器测试套件中的其他进程)对 ...

    白帽子讲浏览器安全.钱文祥(带详细书签).pdf

    1.3 浏览器安全概述 5 1.4 浏览器安全的现状 7 1.5 浏览器的应对策略 9 1.6 “白帽子”与浏览器厂商的联手协作 9 1.7 全书概览 10 1.8 本章小结 12 2 浏览器中常见的安全概念 13 2.1 URL 13 2.1.1 URL的标准...

    微软ASP.NET入门教程

    跟踪概述 跟踪记录到页输出 应用程序级跟踪记录 调试 SDK 调试器 性能 性能概述 性能优化提示 测量性能 ASP 到 ASP.NET 的移植 移植概述 语法和语义 语言兼容性 COM 互操作性 事务 示例应用程序 ...

    snowplow-javascript-tracker:客户端和服务器端JavaScript的Snowplow事件跟踪器。 向您的网站,Web应用程序和服务器添加分析

    Snowplow的浏览器和...@ snowplow /浏览器跟踪器(npm) 技术文件 设定指南 技术文件 设定指南 @ snowplow / javascript-tracker(基于标签) 技术文件 设定指南 技术文件 设定指南 @ snowplow / node-tracker

    uDomainFlag:uDomainFlag是一个浏览器扩展程序,它显示当前可见网站的国家_地区标志

    Brave , Vivaldi和其他基于Chromium的浏览器可以使用扩展。 或者,您可以通过在启用了开发人员模式的浏览器扩展页面上导入扩展来手动安装扩展。 请看发展与贡献 特征 网站访问上的国家标志 内部或特殊资源的特殊...

    基于公司采购管理优化系统的毕业设计实现.zip

    本系统将采用Web应用程序的形式实现,可以通过任何支持浏览器的设备进行访问。该系统将有以下主要功能: 1. 采购计划管理:该功能将允许用户创建和管理采购计划,包括采购目标、采购数量、采购时间等信息。 2. 供应...

    EDC OA办公系统

    EDC OA办公系统基于Internet/Intranet,采用符合技术发展趋势的WEB浏览方式,是一套针对于安防行业的完整办公自动化系统解决方案,其是一套集成企业行政管理,销售管理,客户管理,维修管理,技术服务管理,系统管理...

    Java-Web程序设计(PPT).pptx

    基于浏览器 / 服务器的 B/S 体系结构。 Java-Web程序设计(PPT)全文共389页,当前为第5页。 1.1.1 B/S结构优势 B/S 体系结构相对于 C/S 体系结构而言具有更多的优势,目前大量的应用程序开始转移到应用 B/S 体系结构...

    收获时间跟踪器「Harvest Time Tracker」-crx插件

    Harvest概述Harvest是一种备受喜爱的时间跟踪应用程序,受到全球100多个国家/地区的创意专业人士和团队的信赖。通过桌面应用程序,Web,Basecamp,Trello,GitHub或您的移动设备轻松跟踪时间。深入查看可视化报告,...

    天路商务星CRM

    天路CRM客户关系管理系统以客户为中心,基于完整客户生命周期的发生、发展过程,采用"一对一营销"和"精细营销"的模式量化管理企业市场、销售及服务过程,实现员工、业务部门、分支机构及合作伙伴的协同工作,建立...

    NoMoXSS:不再有 XSS 攻击 - 掌握使用 Firefox 0.10 的 JavaScript 数据污染跟踪敏感数据的论文示例

    如果您对跨站点脚本 (XSS) 和在处理 JavaScript 时跟踪敏感数据的数据污染技术感兴趣,请继续阅读! 概述 跨站点脚本 (XSS) 是 Web 应用程序的常见安全问题,攻击者可以将脚本代码注入应用程序的输出中,然后将其...

    Rod是Devtools驱动程序,可轻松实现网络自动化和抓取-Golang开发

    概述Rod是直接基于DevTools协议的高级Devtools驱动程序。 它是为Web自动化和抓取而设计的。 Rod还尝试向用户公开低级接口,以便每当缺少某个功能时,用户都可以轻松地将控制请求直接发送到浏览器。 功能流畅的界面...

    VSIP服务器虚拟化解决方案.pptx

    进程隔离 强制访问控制(MAC) 基于角色的访问控制 裸金属架构 认证 审计跟踪 CC安全评估级 CC安全测试用例集 FIPS 140-2 认证加密 源代码开放 资源控制 磁盘加密 VSIP服务器虚拟化解决方案全文共35页,当前为第3页...

    jsct:演示应用程序-演示SPA和Backbone基础

    由客户端而非服务器驱动的基于浏览器的应用程序-单页加载 常见的JS编码实践,例如使用应用程序名称空间和最少使用全局名称空间,闭包隐私,使用模板,使用“严格使用”等。 响应式设计,可处理浏览器大小调整和...

    Fortris:俄罗斯方块的 JavaScript 实现。 难免让人上瘾!

    Fortris 是经典益智游戏俄罗斯方块的基于浏览器的版本。 技术亮点 概述 Fortris 使用JavaScript构建,并使用jQuery DOM 操作和CSS样式呈现。 面向对象设计 对于像 Fortris 这样的游戏来说,面向对象是必须的。 由...

    s3_relay:直接上传到S3并由您的Rails应用提取

    它通过利用Amazon S3的来工作,以允许使用基于此浏览器的预签名URL以及应用程序的API凭证将基于浏览器的上传直接上传到S3。 上载每个文件时,gem会在应用程序的数据库中保留有关上载文件的详细信息。 该表应被视为...

    asp.net技术内幕(1)

    15.4.1 使用HTTP处理器 15.4.2 使用HTTP模块 15.4.3 创建WhosOn应用程序 15.5 小结 <br>第16章 跟踪用户会话 <br>16.1 使用浏览器cookie 16.1.1 cookie如何工作 16.1.2 创建和读取...

    LiveSmart视频聊天独立程序带安装教程

    概述 - 顶部 LiveSmart Video Chat是一个独立的Web应用程序,具有视频,音频,录制,屏幕共享和文件传输面对面的通信渠道以及集成的聊天功能。它有自己的推送通知服务器,该服务器基于Socket.io或Rachet ...

    Harvest Time Tracker-crx插件

    Harvest概述Harvest是一种备受喜爱的时间跟踪应用程序,受到全球100多个国家/地区的创意专业人士和团队的信赖。 通过桌面应用程序,Web,Basecamp,Trello,GitHub或您的移动设备轻松跟踪时间。 深入查看可视化报告...

Global site tag (gtag.js) - Google Analytics