【问题标题】:Beyond Mac Address: Uniquely Identifying Devices on the Server Side超越 Mac 地址:唯一标识服务器端的设备
【发布时间】:2012-10-04 10:45:41
【问题描述】:

我正在开发一种分析工具。我希望能够合理地识别独特的用户(或更可能是独特的机器)——某种程度的不准确是可以的。我需要同时支持低级设备(Android/iOS)和网络(JS/Flash),因为我在 Haxe 中构建客户端。 (另一个需要注意的是,我不能使用特定于语言的 API。)

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

但是,我不确定 GUID 是否是个好主意。或者我是否应该用 IP 或其他信息来补充它。 (我确实有权从客户端获取 IP。)

客户端的工作流程是:

  • 检查存储的唯一标识符
  • 如果存在,将其与所有请求一起发送
  • 如果没有,请调用以请求唯一标识符并存储它
  • 在所有后续调用中发送唯一标识符

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

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

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

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

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

    【讨论】:

    • +1 这看起来很有希望。但它并没有解决 what 要存储的问题。
    • 您要存储什么?您发出一个持久性 cookie,然后浏览器负责将其存储在客户端计算机上。如果请求中不存在此 cookie,则您将发出此 cookie,这意味着客户端未知或尚未存储 cookie。您应该设置此 cookie 的 Expires 属性,将其设置为未来合理的日期,以确保客户端在此期间的所有后续请求中都会发送它。而且由于 cookie 是持久的,即使客户端关闭浏览器,它也会被存储。
    【解决方案2】:

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

    【讨论】:

    • 你不能在 Flash 或 Javascript 中做到这一点,对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2014-09-11
    • 2020-04-06
    相关资源
    最近更新 更多