浏览器指纹识别(一直更新)

浏览器的指纹识别

默安科技在先知大会上介绍了根据浏览器的指纹来追踪攻击者,现在他们也还在探究,希望最后把攻击者的画像画出来

传统的安全设备通过禁封ip来防止攻击者进行攻击,这个方法是很粗暴的,因为现在网络环境,用户可能公网出口ip是一样的,粗暴的禁封是不行的,但是如果可以获取到用户浏览器的指纹,并且保证全球唯一的话,根据指纹来限制访问,这样子的方法就比较妥当,我这里只是尝试了解一下获取浏览器指纹的方法,和怎么样尽量保证指纹唯一。

至于怎么拿指纹和攻击者的攻击手法匹配起来,做成一个安全设备我就不得而知了。

开源项目有fingerprintjs,他们也有商业版本。

获取浏览器指纹的老方法

之前获取浏览器指纹的方法是:user-agent。获取安装的插件。

计算唯一性

分析了一下fingerprintjs的代码,看一下获取的变量来分析一下是否可以达到全球设备唯一的效果。navigator获取到的变量,获取到的位置就很好,但是有个问题就是,攻击者可能通过变换位置,这样子获取到的指纹还是不稳定的。

所以获取指纹的原则有:稳定,唯一。

就是要求保证攻击者设备即便移动(物理位置移动,ip变换)还是可以保证他所使用的浏览器有唯一的指纹。增大攻击者攻击的成本。

获取的变量

- navigator.userAgent 
- navigator.language (中文*2,韩语,日文,英文,印度,阿拉伯,俄语)8
- navigator.platform
- navigator.cpuClass 获取cpu信息
- navigator.getBattery 获取电量
- navigator.geolocation 获取物理地址高度
  • screen.colorDepth
  • getTimezoneOffset
  • hasSessionStorage 2
  • hasLocalStorage 2
  • hasIndexDb 2
  • navigator.doNotTrack 2

    参考链接