如何在PHP中创建唯一的用户指纹

So *_* It 24 php statistics user-agent identifier fingerprint

在PHP中生成用户唯一性的"指纹"的最佳方法是什么?

例如:

  1. 我可以使用用户的IP地址作为"指纹",但是,同一IP上可能有多个其他用户
  2. 我可以使用用户的IP +用户代理作为"指纹",但是,单个用户可以简单地从safari交换到firefox并再次被视为唯一

理想情况下,指纹标记"机器"而不是浏览器或"ip",但我想不出这是如何实现的.

随时了解您如何唯一识别用户的想法/建议,以及您的方法有哪些优点/缺点.

JAL*_*JAL 13

该网站几乎涵盖了您可以用来通过浏览器区分个人的每一条信息.

https://panopticlick.eff.org/

JavaScript,Java和Flash帮助很大.

  • 这可能是我访问过的最恐怖的网站,以及http://samy.pl/evercookie/ (3认同)

oez*_*ezi 9

最简单和最好的方法:使用phps 会话管理 - 为每个客户端提供一个id,存储在cookie中(如果已启用)或在每个链接和表单上作为get-variable给出.(或者你可以自己设置一个cookie).但是:这只是浏览器的"指纹" - 如果用户更改了浏览器,删除了他的cookie或其他任何内容,则无法识别它.

通过ip识别每个客户端通常是一个坏主意,不会起作用.使用相同路由器的客户端将拥有相同的IP - 通过代理池连接的客户端可能在每个页面加载时都有另一个ip.

如果您需要一个无法由客户端轻松操作的解决方案,请尝试使用客户端浏览器支持的所有内容进行以下组合,并在每个页面加载时进行比较:

  • "正常"HTTP Cookie
  • 本地共享对象(Flash Cookie)
  • 使用HTML5 Canvas标记将cookie存储在自动生成的强制缓存PNG的RGB值中以读取像素(cookie)
  • 存储cookie并读出Web历史记录
  • 在HTTP ETag中存储cookie
  • Internet Explorer用户数据存储
  • HTML5会话存储
  • HTML5本地存储
  • HTML5全球存储
  • 通过SQLite进行HTML5数据库存储

有一个名为evercookie的解决方案可以实现所有这一切

  • 您链接到 PHP 手册的德文翻译...这是英文的同一页面:http://www.php.net/manual/en/book.session.php -- 另外,使用 Evercookie 或任何其他以使其难以删除为明确目的在客户端上存储数据的方式在大多数国家/地区可能是非法的。 (2认同)

jms*_*rra 5

还有其他需要考虑的事情,用户的公共 IP 地址在每次页面加载时也可能会发生变化。
有多个组织在其路由器中交换公共 IP 以平衡流量。