检查用户是否有两个网站运行实例的最佳方法

时间:2011-02-10 14:41:07

标签: php session

我有一些想法,但非常基本但不完整。我想知道检查两个不同用户是否记录了相同的PC / IP并运行我网站的两个实例的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

如果两个用户具有相同的IP,则它们是

  • 在同一台计算机上
  • 在同一家庭,办公室或具有共享互联网连接的公司
  • 在同一个网吧

这是你能得到的。可靠地检测两个会话是否在同一台计算机上几乎是不可能的,因为没有可以帮助您说明的指标。

如果您想与欺诈作斗争,您需要使用不同的方法。

答案 1 :(得分:1)

首先,让服务器在页面加载时以及每次用户交互时发送唯一标记(例如csrf token)。然后,让每个用户交互(发布或请求)包含此令牌(并生成一个新令牌)。

当您从同一个IP地址获得意外令牌时,您应用第二个技巧:将鼠标时间戳添加到请求并记录(到毫秒)时间差(从此 dt )本地服务器时间与令牌附带的时间戳之间的差异,延迟时间的变化具有一定的误差范围。

如果两个实例在同一台PC上运行,那么 dt 对于两个唯一令牌(在最近的交互或页面加载期间生成)都是相同的。

在另一台物理计算机上, dt 与同一IP地址上的另一台PC上的相同(即使在误差范围内)的可能性非常小,因此您有一个有效的方式测试

答案 2 :(得分:0)

你可以查看ip-address,用户代理,时区,激活的插件...... 为避免从同一台计算机登录多个用户,您可以在每个链接上设置cookie或传输会话密钥。 (你必须将哈希与ip-address结合起来,因为复制链接而得到的用户信息不应该将其他用户登录到哈希所属的帐户中)