Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 唯一设备标识_Javascript_Jquery_Html - Fatal编程技术网

Javascript 唯一设备标识

Javascript 唯一设备标识,javascript,jquery,html,Javascript,Jquery,Html,我们正在开发内部基于web的应用程序,用于在智能手机和平板电脑上查看数据报告。我们的客户向我们询问只有某些设备才能访问内容的可能性。因此,我们使用基于javascript/HTML5的技术,无法读取IMEI或设备uuid等唯一ID。其想法是能够使用上述技术自动创建与时间无关的设备指纹 问题是我们是否能够使用javascript/HTML5创建唯一的设备指纹 线索可能是可用的或浏览器已知的信息(例如)您可以使用该库,它对计算浏览器指纹有很大帮助 顺便说一下,在上你可以看到这通常是多么独特。看起来p

我们正在开发内部基于web的应用程序,用于在智能手机和平板电脑上查看数据报告。我们的客户向我们询问只有某些设备才能访问内容的可能性。因此,我们使用基于javascript/HTML5的技术,无法读取IMEI或设备uuid等唯一ID。其想法是能够使用上述技术自动创建与时间无关的设备指纹

问题是我们是否能够使用javascript/HTML5创建唯一的设备指纹

线索可能是可用的或浏览器已知的信息(例如)

您可以使用该库,它对计算浏览器指纹有很大帮助


顺便说一下,在上你可以看到这通常是多么独特。

看起来phoneGap插件将允许你获取设备的uid


更新:这取决于运行本机代码。我们使用此解决方案编写javascript,该javascript被编译为我们正在创建的本机电话应用程序的本机代码。

我有以下想法,您可以处理这样的访问设备ID(ADID):

阿迪德将军

  • 准备可信用户(如经理)可以从设备登录的网页-该网页应显示“允许访问此设备”按钮
  • 当用户按下按钮时,页面向服务器发送请求以生成ADID
  • 服务器gen ADID,将其存储在白名单上并返回页面
  • 然后页面将其存储在设备localstorage
  • 受信任的用户现在注销
使用设备

  • 然后,其他用户(例如使用同一设备的员工)转到页面并向服务器发送统计信息请求,包括参数ADID(以前存储在localstorage中)
  • 服务器检查ADID是否在白名单上,如果是,则返回数据
在这种方法中,只要用户使用相同的浏览器并且不重置设备,设备就可以访问数据。如果有人重置了设备,那么受信任的用户需要再次登录并生成ADID

您甚至可以为受信任的用户创建一些ADID管理系统,在生成ADID时,他还可以输入设备序列号,将来如果设备重置,他可以找到该设备并为其重新生成ADID(这不会增加白名单大小)他还可以从白名单中删除一些他不再允许访问服务器数据的设备的ADID

如果系统使用多个域/子域,te manager在登录后应看到许多“从域xyz.com访问此设备”按钮-每个按钮将重定向设备执行正确的域、代理ADID并重定向回

更新 基于链接的更简单方法:

  • 管理员使用任何设备登录系统并生成一次性使用链接(例如24小时)
  • 然后,经理将此链接发送给员工(或其他人,例如通过电子邮件),员工将该链接放入设备,服务器将ADID返回到设备,设备将其存储在本地存储器中。在上面的链接停止工作后,只有系统和设备知道ADID
  • 然后,使用此设备的员工可以从中读取数据,因为它具有ADID,该ADID位于服务器白名单上

您可以使用此javascript插件

它可以为您获取大量关于手机和台式机的信息,例如uuid

var uuid=new DeviceUUID().get()

e9dc90ac-d03d-4f01-a7bb-873e14556d8e

var dua = [
    du.language,
    du.platform,
    du.os,
    du.cpuCores,
    du.isAuthoritative,
    du.silkAccelerated,
    du.isKindleFire,
    du.isDesktop,
    du.isMobile,
    du.isTablet,
    du.isWindows,
    du.isLinux,
    du.isLinux64,
    du.isMac,
    du.isiPad,
    du.isiPhone,
    du.isiPod,
    du.isSmartTV,
    du.pixelDepth,
    du.isTouchScreen
];

我想你会希望这一切都在幕后,可以这么说吗?就像没有必须输入的密码或其他什么?此外,对于某些设备,你是说只有手机和平板电脑可以访问它,还是只有某些单独的设备,比如只有员工的手机可以访问它?类似的问题你可能会发现很有用:你在谈论JS和HTML5,但这只是前端技术。在服务器端,您可以使用设备请求中的MAC地址,但即使这样也不安全,因为它很容易被欺骗。我会选择一些标准的基于用户的身份验证,而不是基于设备的身份验证。它必须是基于web的应用程序吗?可能是安装在设备上的应用程序,但使用web技术(html/javascript等)编写?@TauWich如果您想从运行应用程序的设备获取系统信息,则需要运行本机代码。我想不出比PhoneGap更好的方法了。您可以注册新用户并将其链接到IMEI。在大多数人的世界里,这是万无一失的。不过,你的“独特指纹”会随着这种方法而定期变化。你所需要做的就是添加/删除浏览器插件或系统字体,这样你就不再被归类为同一个浏览器了。没错,但据我们所知,没有其他方法。创建cookie(或支架内cookie)以忽略指纹中将来的更改可能是一个好主意。@Archer:你是对的,但我希望此方法能为持久指纹提供足够的时间。在移动平台上更改例如systemfont并不容易。我马上就要测试它。@PawełS:没有明显的持久性cookie或其他类型的web存储,请参阅我关于这个主题的问题:@TauWich大多数应用程序在Android设备上下载并安装字体。。。自己更改字体是非常容易和常见的。很抱歉,但我不认为有任何方法可以依赖这个建议——只是我的观点:)如果这实际上是在浏览器javascript上下文中单独工作的,那么为什么库不使用它呢?据我所知,phonegap是一个移动web应用程序开发库,而不是一个独立的javascript库。如果这真的起作用,它将摧毁任何剩余的web浏览匿名性概念。。。此“功能”将违反每个人在浏览网页时对隐私的期望。Cordova插件依赖于运行本机代码(例如,Android的java,iPhone的objective-C),因此它不是一个纯javascript解决方案。虽然此链接可以回答这个问题,但最好包括