通过cookie检测多个帐户

时间:2010-01-02 23:28:15

标签: php security detect account

我想在浏览器游戏中检测多个帐户:如果用户有多个帐户,我想知道这一点。

由于各种原因,我不想通过比较IP来检测多帐户。用户可以共享IP,IP很容易更改。所以这不是一个好方法。

相反,我想使用Cookie检测帐户。你认为这是一个很好的解决方案吗?

<?php
$uniqueHash = md5($_SERVER['REMOTE_ADDR'].mt_rand(1, 100000)); // identify a single user
if (isset($_COOKIE['uniqueHash'])) {
    // UPDATE dbTable SET uniqueHash = '".$_COOKIE['uniqueHash']."' WHERE id = x
}
else {
    setcookie('uniqueHash', $uniqueHash, time()+3600*24*30, '/', '.domain.com', FALSE, TRUE)
}
?>

之后,我可以从数据库表中选择具有相同uniqueHash值的所有用户。

这可以改进吗?还是一个非常糟糕的解决方案?

闪存饼干怎么样?他们更好,对吧?但是当我的网站上没有闪光灯时,我无法使用它们,是吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

如果您创建包含登录,IP,哈希和UserID的日期的日志 - 您可能能够了解用户是否是多帐户。自动检测它几乎是不可能的,如果我正在访问我的一个朋友,我可能会在他的计算机上登录来检查我的帐户吗?

所以记录所有数据,然后有一个“多猎人” - 人类查看它是否是同一个玩家。

答案 1 :(得分:1)

将值存储到cookie中比比较ip的imho更糟糕。改变你的ip很容易改变/删除cookie。

我认为你最好的办法就是有一些基本的AI解决方案来标记可疑账户。因此,AI应该同时具有相同IP的多个登录(可以是IP共享或多个浏览器同时进行)。 另请参阅短时间内使用不同帐户从同一个IP注销和登录。尝试查找主机名并使用它,因为ISP的DHCP有时会为客户端提供一个新的ip,但主机名保持不变。

重点是没有基于一条信息的解决方案。

Btw,另一个想到的解决方案是让用户通过发送短信让他们支付非常少的金额(比如1美元)来确认他们的账户,在这种情况下,注册许多账户并不具吸引力。