2012-10-04 26 views
0

我正在研究分析工具。我希望能够合理地识别独特的用户(或更可能是独特的机器) - 某种程度的不准确性是可以的。我需要同时支持低级设备(Android/iOS)和Web(JS/Flash),因为我正在Haxe建立客户端。 (另一个需要注意的是我不能使用语言特定的API。)超越Mac地址:独特识别服务器端的设备

以前,我用(ip, mac address)的元组来唯一标识用户。但是,在Flash(和Javascript)中,您无权访问该mac地址。我想到我应该在服务器端存储和管理身份,也许使用GUID。客户端会从服务器请求GUID(或某种ID),并将其用于来自同一设备的任何后续请求。

但是,我不确定GUID是否是一个好主意;或者如果我应该用知识产权或其他信息来补充它。 (我有机会获得从客户端得到IP地址。)

客户机上的工作流程是:

  • 检查存储的唯一标识符
  • 如果它存在,所有的发送请
  • 如果没有,拨打电话,请求一个唯一的标识符,并将其存储
  • 发送唯一标识符与所有后续调用

当然,这只会在每个设备上都是唯一的,并且可能会通过删除本地设备上的标识符来获得两个用户的误报。

在服务器端,它会像生成一个新的GUID一样简单,并在请求唯一标识符时将其发送给用户。

这是一个很好的方法吗?有更好的方法吗?

回答

1

根据您需要的独特性和安全性级别,您可能会考虑使用persistent cookies。该cookie可能是您在工作流程中描述的唯一标识符。为了确保cookie将在后续请求中发送,它应该是persistent cookie

+0

+1这看起来很有前途。它没有解决*什么*存储。 – ashes999

+0

你想存储什么?您发出一个持久cookie,然后浏览器负责将其存储在客户端计算机上。如果请求中不存在客户端未知或尚未存储cookie,则会发出此cookie。您应该在将来将其设置为相当远的日期时设置此Cookie的“Expires”属性,以确保客户端在此期间的所有后续请求中发送此Cookie的“Expires”属性。而且由于即使客户端关闭浏览器,cookie也是持久的,因此它将被存储。 –

1

如果设备上有SNMP代理(大多数设备将支持SNMP),则可以通过SNMP查询MAC地址,从而识别设备。这就是网络管理工具的工作原理(并将多个接口连接在一起以识别具有多个接口的单个​​设备)

+0

你不能在Flash或Javascript中做到这一点,你可以吗? – ashes999