关于安全:今日思考如何实现跨浏览器设备指纹识别

106次阅读

共计 1414 个字符,预计需要花费 4 分钟才能阅读完成。

现在的黑灰产愈发嚣张,欺诈技术也是“顶风而上”,各种伎俩频出,尤其是在电商畛域,为了薅羊毛,黑灰产可能会在一台电脑同时登录多个浏览器,而这就是跨浏览器设施指纹识别的一个利用场景。

当然,还会有其余相似的场景,只有咱们想不到,没有黑灰产做不到。总体而言,咱们须要跨浏览器设施指纹识别去检测欺诈行为和滥用账号的状况。通过辨认设施指纹,能够判断是否有多个账号在同一设施上进行操作,或者同一账号在多个设施上进行异样操作,从而进步安全性和防备欺诈危险。

首先要申明:咱们如果要保障设施指纹跨内核的性能(chrome 和 edge 内核一样,firefox 不一样),那么必然会 减少碰撞机率,所以,审慎应用。

简略尝试

实现跨浏览器的设施指纹识别是一项简单的工作,因为不同浏览器和设施提供的特色和 API 可能存在差别。然而,有一些跨浏览器的设施指纹识别解决方案可用于获取统一的指纹信息,所以咱们能够小试一下。

第一步:收集设施特色

在这一步,咱们能够应用不同的技术和 API,收集浏览器和设施的各种特色信息,例如 User-Agent 字符串、屏幕分辨率、操作系统信息、插件信息、语言设置等。

第二步:统一化特色数据

将收集到的特色数据进行标准化和归一化解决,确保在不同浏览器和设施上的一致性。这能够通过规范化数据格式、排序、删除反复信息等形式来实现。

第三步:哈希和加密

对归一化的特色数据进行哈希或加密解决,以确保设施指纹的安全性和隐衷爱护。罕用的哈希算法包含 MD5、SHA-1、SHA-256 等。

第四步:生成设施指纹

将解决后的特色数据生成设施指纹,能够应用哈希值作为指纹标识。确保生成的指纹具备足够的唯一性和稳定性。

ok,间接来看代码:

function generateDeviceFingerprint() {
  var fingerprint = '';

  // 收集设施特色信息
  var userAgent = navigator.userAgent;
  var screenResolution = window.screen.width + 'x' + window.screen.height;
  var language = navigator.language;
  var plugins = '';
  for (var i = 0; i < navigator.plugins.length; i++) {plugins += navigator.plugins[i].name + ',';
  }

  // 统一化特色数据
  var normalizedData = userAgent + screenResolution + language + plugins;

  // 哈希特色数据
  fingerprint = md5(normalizedData); // 应用 MD5 算法进行哈希解决,须要引入 MD5 算法库

  return fingerprint;
}

// 示例应用了 MD5.js 库,须要引入相应的库文件
<script src="md5.js"></script>

从下面的代码中,咱们能够看到,generateDeviceFingerprint() 函数通过收集浏览器的 User-Agent、屏幕分辨率、语言设置和插件信息等特色信息,并对其进行归一化和哈希解决,最初生成设施指纹。

结语

回到咱们后面说的问题,目前市场上对于跨浏览器设施指纹识别有肯定的需求量,然而还没有一个比较完善的形式来均衡各个内核与碰撞机率之间的关系,如果有企业须要,那么必须得做出取舍。

以上。

如果须要设施指纹,能够戳 >>> 收费体验

正文完
 0