php - 在 PHP 中创建唯一用户指纹的方法

标签 php statistics user-agent identifier fingerprint

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

例如:

  1. 我可以使用用户的 IP 地址 然而,作为“指纹” 可以是同一 IP 上的多个其他用户
  2. 我可以 使用用户的 IP + 用户代理作为 然而,“指纹”是单个用户 可以简单地从 safari 切换到 firefox,再次被视为独一无二

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

对您如何唯一地识别您的用户以及您的方法有哪些优点/缺点的想法/建议持开放态度。

最佳答案

最简单最好的方法:使用 phps session-management - 每个客户端都有一个 ID,存储在 cookie 中(如果启用)或作为每个链接和表单上的 get-variable(或者您可以自己设置 cookie)。但是,这只会在浏览器上留下“指纹”——如果用户更改了他的浏览器、删除了他的 cookie 或其他任何东西,您将无法再识别它。

通过 IP 地址识别每个客户端通常不是一个好主意,也行不通。使用同一路由器的客户端将具有相同的 IP 地址 - 通过代理池连接的客户端在每次加载页面时可能具有另一个 IP 地址。

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

  • “普通”HTTP Cookie
  • 本地共享对象(Flash Cookie)
  • 使用 HTML5 Canvas 标签将 cookie 存储在自动生成、强制缓存的 PNG 的 RGB 值中以读取像素(cookie)返回
  • 在网络历史记录中存储 cookie 并读取它
  • 在 HTTP ETag 中存储 cookie
  • Internet Explorer 用户数据存储
  • HTML5 session 存储
  • HTML5 本地存储
  • HTML5 全局存储
  • 通过 SQLite 的 HTML5 数据库存储

有一个名为 evercookie 的解决方案实现了所有这些。

关于php - 在 PHP 中创建唯一用户指纹的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085230/

相关文章:

php - 基于键将 5 个数组与 php 组合

php - 是否可以覆盖默认的 PHP 函数?

php - 使用 Symfony2 处理统计数据

javascript - 生成 Javascript 对象键/值的排列

javascript - IE 8+ 版本 crossrider 扩展中的 userAgent 冲突

eclipse - 更改 Eclipse 3.5 中的用户代理以安装新软件

internet-explorer - Nginx:返回错误 403 并显示一条消息

php - 如何在 php 版本 8 中使用 docker-compose up official wordpress latest image?

php - 在 Laravel 5.5 中将 mysql json 字段转换为对象

statistics - 分析和绘制 OMNET++ 结果