使用php / javascript的唯一序列号

时间:2011-03-10 08:55:38

标签: php javascript unique-key

有没有办法使用php / javascript为Mac,Windows和设备(如iPhone,Blackberry)等机器获取唯一的序列号?

4 个答案:

答案 0 :(得分:1)

它确实需要至少一个参考数据--javascript无法读取IP地址或MAC地址等内容 - 因此排除了这一点。 PHP有uuid的实现 - 但要创建一个有效的实现,您需要分配一个真实的IP地址。

如果代码部署了服务器端,则可以直接实现基于计数器的系统。

答案 1 :(得分:1)

什么是机器?

机器是由零件制成的,所以确定一台机器仍然是相同的,这本身就是一个哲学问题。

例如,计算机的硬盘驱动器可能具有唯一的序列号,如果机器具有网卡,则它具有唯一的MAC地址,并且在运行不同的操作系统时甚至可能被视为“不同的机器”( Windows,Mac等)。所有这些唯一ID可以混合在一起以创建唯一的机器ID,这正是Mathematica等一些软件供应商所做的,以确保您不在机器或操作系统上运行该软件,而您尚未获得许可它的目的。

使用接口标识符

随着 IPv6 最终广泛使用,协议的接口标识符可以作为您的计算机(或至少其网卡)的标识符,因为它包含网卡的MAC地址。 IPv6提供隐私扩展以防止这种识别,因为在个人计算机和移动设备时代,机器识别等于用户识别,这是一个巨大的隐私问题。 目前,Apple和Android移动设备不提供隐私扩展,默认情况下它们在Mac和Linux上处于停用状态。只有Windows 7似乎默认启用它们。

访问PHP和javascript中的IP地址

  • 在PHP中,通过$_SERVER['REMOTE_ADDR']
  • 访问IP地址非常简单
  • 在javascript中,您可以向返回用户IP地址的服务器发出JSONP请求。

请参阅:Can I perform a DNS lookup (hostname to IP address) using client-side Javascript?

在Javascript中访问MAC地址

即使机器只有IPv4 - 有一个概念证明(http://samy.pl/mapxss/),它通过javascript XSS从一些路由器检索MAC地址。然后,路由器的MAC地址将发送到Google地理定位服务,以识别计算机的确切位置。 (当然这只是移动设备的弱标识符)

合并标识符

Webbrowsers将为您提供一个useragent字符串,可以使您的标识符“更独特”,然后有cookie,地理定位服务等。

虽然这些技术都没有提供创建100%唯一标识符的方法,但这些技术中的一些组合可以提供非常高的标识准确性。即使机器的某些部分发生了变化,您也可以在应用一系列识别技术时重新识别它。另请注意,使用浏览器识别等时,您可能会遇到过度识别的问题,尤其是当计算机使用多个浏览器访问您的服务时。

询问用户

由于潜在的隐私问题,您应该考虑使用选择加入方法来创建唯一ID。此外,由于是与用户联系的用户,他们是唯一能够以 100%认证来唯一识别其机器的用户。因此,最好的方法是激励用户信任您识别他们的机器。一个简单的场景是为用户提供登录(因此您有用户标识),然后要求用户帮助您识别机器。当然,这只有在您信任您的用户时才有效,但如果您不相信,他们也可能不信任您。

答案 2 :(得分:0)

不,没有办法做到这一点。

这是一件好事,因为它更难以通过网站跟踪人。

隐私是宝贵的;)

马丁急忙删除所有的饼干并戴上他的锡箔帽

答案 3 :(得分:0)

什么是机器?

机器是由零件制成的,所以确定一台机器仍然是相同的,这本身就是一个哲学问题。

例如,计算机的硬盘驱动器可能具有唯一的序列号,如果机器具有网卡,则它具有唯一的MAC地址,并且在运行不同的操作系统时甚至可能被视为“不同的机器”( Windows,Mac等)。所有这些唯一ID可以混合在一起以创建唯一的机器ID,这正是Mathematica等一些软件供应商所做的,以确保您不在机器或操作系统上运行该软件,而您尚未获得许可它的目的。

使用接口标识符

随着IPv6最终变得广泛可用,协议的接口标识符可以充当您的计算机(或至少其网卡)的标识符,因为它包含网卡的MAC地址。 IPv6提供隐私扩展以防止这种识别,因为在个人计算机和移动设备时代,机器识别等于用户识别,这是一个巨大的隐私问题。目前,Apple和Android移动设备不提供隐私扩展,默认情况下它们在Mac和Linux上处于停用状态。只有Windows 7似乎默认启用它们。