-2

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

4

4 回答 4

1

什么是机器?

机器是由零件制成的,因此确定机器是否仍然相同可能本身就是一个哲学问题。

例如计算机的硬盘可能有唯一的序列号,如果机器有网卡,它就有唯一的 MAC 地址,甚至在运行不同的操作系统(Windows、Mac , ETC)。所有这些唯一 ID 可以混合在一起以创建唯一的机器 ID,这正是 Mathematica 等一些软件供应商所做的,以确保您不在机器或操作系统上运行软件,您没有获得许可为了。

使用接口标识符

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

在 PHP 和 javascript 中访问 IP 地址

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

请参阅:我可以使用客户端 Javascript 执行 DNS 查找(主机名到 IP 地址)吗?

在 Javascript 中访问 MAC 地址

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

组合标识符

网络浏览器将为您提供一个用户代理字符串,它可以使您的标识符更加“独特”,然后是 cookie、地理定位服务等。

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

询问用户

由于潜在的隐私问题,您应该考虑使用选择加入的方法来创建唯一 ID。此外,由于是与他们的机器接触的用户,因此他们是唯一可以100%确定地唯一识别他们的机器的人。所以最好的办法是激励用户信任你识别他们的机器。一个简单的场景是为用户提供登录信息(这样您就有了用户标识),然后要求用户帮助您进行机器识别。当然,这仅在您信任您的用户时才有效,但如果您不信任,他们可能也不应该信任您。

于 2011-03-10T11:24:49.800 回答
1

它确实需要至少一个参考数据 - javascript 无法读取 IP 地址或 MAC 地址之类的东西 - 所以这被排除在外。PHP有uuid的实现——但要创建一个有效的,您需要分配一个真实的 IP 地址。

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

于 2011-03-10T09:14:17.460 回答
0

什么是机器?

机器是由零件制成的,因此确定机器是否仍然相同可能本身就是一个哲学问题。

例如计算机的硬盘可能有唯一的序列号,如果机器有网卡,它就有唯一的 MAC 地址,甚至在运行不同的操作系统(Windows、Mac , ETC)。所有这些唯一 ID 可以混合在一起以创建唯一的机器 ID,这正是 Mathematica 等一些软件供应商所做的,以确保您不在机器或操作系统上运行软件,您没有获得许可为了。

使用接口标识符

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

于 2014-02-28T21:01:40.647 回答
0

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

这是一件好事,因为它使通过网站跟踪人们变得更加困难。

隐私是宝贵的;)

马丁赶紧去删除他所有的饼干并戴上他的锡纸帽子

于 2011-03-10T09:00:44.233 回答