问题陈述:在访问网站的设备上跟踪匿名用户的持续状态(或在计时器后锁定功能)。这需要在禁用cookie的情况下工作,跨浏览器,包括以隐身模式访问。这也需要是特定于设备的,家庭网络中的2台计算机将有2个独立的计时器。
我已经在一些场景中看到了这种应用,最近的是带有流计时器的NBC奥运会。"免费免注册试用"有很多用途。而不是放弃一切或限制功能的"先试后买"。任何想法都会很感激!
为此,您需要使用跨浏览器指纹识别(或设备指纹识别)技术。
相关研究
我建议你阅读Yinzhi Cao, Song Li和Erik Wijmans的论文(跨)浏览器指纹识别通过操作系统和硬件级别的功能,其中有其中描述的两种技术的相关演示实现。
我发现的另一篇关于网络指纹识别技术的好论文,如果你感兴趣的话,你应该阅读Vítor Bernardo和Dulce Domingos的基于web的指纹识别技术。
设备指纹识别的安全性
设备指纹识别的基础是从客户端设备收集各种功能,这些功能指示设备的设备/操作系统,并且在浏览器中是稳定的。如果收集到足够多的特征,那么一个用户的这些特征的组合很可能在所有用户中是独一无二的。
对设备指纹识别有用的大多数特性只能在客户端(使用JavaScript)上测量,然后需要以原始或散列的形式通信回服务器。因此,设备指纹识别作为一种安全措施还依赖于您混淆执行指纹识别的JS和通信指纹的相应网络流量的能力。如果用户能弄清楚指纹是如何被收集和/或发送回服务器的,那么他们就可以欺骗它,以绕过你基于它设置的任何保护。
指纹识别功能
要度量的有用特性包括(但不限于)
- GPU渲染工件<<ul>
- 反走样方法/gh>
- OpenGL驱动
varying
插值 - 纹理采样
- 亚像素渲染
- 特定字体的字距、跟踪和前导可以指示由于安装版本不同而产生的细微变化
就容易实现的目标而言,有像Navigator.hardwareConcurrency
这样的Web api直接暴露底层硬件的详细信息,然而许多浏览器现在禁用或欺骗了这个特性,以避免将其用于指纹识别。
你收集的功能越多,你的指纹就越可靠,只要它们在同一设备上的不同浏览器上不存在差异。
结论最终,设备指纹识别并没有万能的,也没有最终的,因为这是一个非常复杂的话题,有许多潜在的方法,浏览器供应商试图阻止指纹识别技术,开发人员试图找到新的。
如果你正在寻找一个现成的解决方案,目前有一小部分开源和商业浏览器和用户指纹服务,比如FingerprintJS(两者都有)。尽管许多设备指纹识别解决方案似乎并没有作为独立功能出售,而是作为防欺诈系统(如SEON)或类似系统的一部分出售。
(以下只是个人意见)
总的来说,我认为设备指纹是锁定功能的一个不确定的解决方案,更好的解决方案是使帐户注册过程尽可能快速和简单(尽管也许免费帐户可以与设备或浏览器指纹结合使用,以缓和滥用免费试用系统)