我曾遇到过一位在线游戏用户的说法,根据他与一位版主的交谈,游戏引擎可以立即识别用户在同一台计算机上创建多个账户时的情况。他明白这更多地与网卡有关,而不是计算机,所以我很快就发现,唯一的可能性是读取 MAC 地址(用户可以使用多个浏览器,可以重新安装系统,而且无论如何安全性都会起作用)。
这句话让我非常好奇。浏览器游戏(用 PHP 编写)真的可以访问和读取我的 MAC 地址吗?ActiveX 不是这种情况,因为只有一小部分游戏玩家使用 IE。我知道没有允许这样做的标准机制,但我不是专家……
读取 MAC 地址的能力对于隐私来说会非常危险,所以这非常令人不安......
答案1
通常,除非 Web 服务器和客户端位于同一以太网段,否则为 PHP 提供服务的主机只能从用户的浏览器中辨别出客户端 IP 地址,而不能辨别关联的 MAC 地址。这是因为 MAC 是链路本地地址,而路由器不会转发具有链路本地地址的数据包。因此,如果 Web 服务器和客户端之间至少有一个路由器,则 Web 服务器将只能看到最接近它的路由器的 MAC。
也就是说,可以使用客户端 JavaScript 通过 ActiveX 桥接 NIC 来检测 IE 中的 MAC。请参阅此Stack Overflow 帖子了解更多详情。
另外,也可以在其他浏览器中使用 Java 小程序。Java 运行时环境策略文件中设置了其安全级别,因此如果用户启用了对系统信息的访问,则小程序可能会获取 MAC。
TL;DR——除非浏览器启用了可以桥接到操作系统的技术(例如,ActiveX、Java applet 等),否则浏览器不可能检测到客户端 MAC 地址。