找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

浏览器指纹伪装软件原理分析(防关联浏览器工作原理)

otmsjq 2022-12-14 19:22:46 显示全部楼层 阅读模式 打印 上一主题 下一主题
设备指纹是什么?


本文的设备指纹,是指用于识别设备的唯一特征。

常用于用户身份识别、WEB安全防护等领域。

设备指纹是怎么伪造的?

设备指纹是可以被伪造和篡改的,比如通过浏览器插件,常可以实现这一点,如:Canvas Fingerprint Defender。

伪造或篡改的原理,是通过拦截JS某些函数,对函数返回结果做修改,使本该返回固定数据的函数,返回成不固定的数据,因为设备指纹的获取是通过JS取信息实现的,只要数据变的不固定,将可能影响指纹的正确获得,这样就实现了设备指纹的伪造。

隐私威胁大多出自于一些 DOM API 或是浏览器的特性,比如:

WebRTC 的内网穿透会泄漏你的 IP 地址
Canvas 能获知你系统中安装的字体和一些 GPU 相关的信息(WebGL和AudioContext 同理)
HSTS Super Cookie 利用了网站可以通过 HSTS 要求用户只能通过 HTTPS 访问
用户是否进行授权的信息(navigator.permissions)在关闭网站时不清空
各种插件,如 flash
当然,还有我们最熟悉、最被妖魔化的 cookie

整体归纳来说,防范这些隐私威胁通常是有较高代价的,你当然可以选择通过修改浏览器来禁用 WebRTC、禁止 canvas 被 toDataURL / toBlob、禁止 AudioBuffer 被 getChannelData、无视掉 Strict-Transport-Security 响应头、不保留授权信息、禁用插件、禁用cookie等,甚至你还可以放大招直接禁用掉 js(tor browser 就是这么做的)。当然,你每禁用一个特性都会使你的浏览器变得难用一点,有些更会伤敌八百自损十万。从浏览器厂商的角度看,做这种事显然是不值得的。毕竟你自己也说了,“那种不是给日常使用设计的”,不是吗?

如何检测指纹伪造?

从设备指纹的角度,该如何对抗这种浏览器插件造成的指纹篡改和伪造呢?

通用的方法是看这个函数的定义能否toString。如果一个函数的定义是[native code],那么说明是该函数原生的,未被修改过的。

var canvas_test = document.createElement(‘canvas’);canvas_test.toDataURL.toString;

反之,如果如果不是原重的,是一个自定义函数,说明该方法是被修改过的,可以视为指纹被伪造了。

同样的方法,也可以用于检测其它更多函数。
回复

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐