通过 cookie 检测多个帐户
Posted
技术标签:
【中文标题】通过 cookie 检测多个帐户【英文标题】:Detect multi accounts via cookies 【发布时间】:2010-12-31 21:14:30 【问题描述】:我想检测浏览器游戏中的多个帐户:如果用户有多个帐户,我想知道这一点。
由于各种原因,我不想再通过比较 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值的用户。
这可以改进吗?还是完全糟糕的解决方案?
Flash cookie 怎么样?他们更好,对吧?但是当我的网站上没有 Flash 时,我不能使用它们,可以吗?
提前致谢!
【问题讨论】:
您认为 cookie 比 IP 地址更难更改的原因是什么? 嗯......你说得对,它们并不难改变。但是如果一个用户被 cookie 检测到,我可以确定他有多个帐户。如果我通过 IP 检测到它,我不能完全确定。 【参考方案1】:如果您创建包含登录日期、ip、哈希和用户 ID 的日志 - 您可能能够了解用户是否是多帐户。自动检测几乎是不可能的,如果我拜访我的朋友,我可能会登录他的电脑查看我的帐户?
所以记录所有数据,然后让“多人猎人”——人类看看它是否是同一个玩家。
【讨论】:
这可能是更简单的解决方案。我曾经和几个同事一起玩一个名为 Travian 的网络游戏,其中一个人写了一个快速工具,可以在他登录其他帐户时交换 cookie。我们假设他被抓住的唯一方法是一个人将他的登录时间与他的 IP 地址进行比较。 是的,并创建一个基于 Lucene/SOLR 的应用程序,以便能够轻松快速地搜索日志信息。 非常感谢,您说服了我让人类检查多个帐户的日志。【参考方案2】:将值存储到 cookie 中比比较 ip 的恕我直言更糟糕。 Cookie 很容易更改/删除,而更改您的 ip 则要困难得多。
我认为最好的办法是拥有一些标记可疑帐户的基本 AI 解决方案。因此,同时使用相同 IP 进行多次登录(可能是 IP 共享或同时多个浏览器)是 AI 应该选择的。 还可以在短时间内查看使用不同帐户从同一 IP 注销和登录。尝试查找主机名并使用它,因为 ISP 的 DHCP 有时会给客户端一个新的 ip,但主机名保持不变。
关键是没有基于一条信息的解决方案。
顺便说一句,想到的另一个解决方案是让用户通过发送短信确认他们的帐户,让他们支付很少的金额(如 1 美元),在这种情况下,注册多个帐户没有吸引力。
【讨论】:
谢谢你,这就是我现在要做的:)以上是关于通过 cookie 检测多个帐户的主要内容,如果未能解决你的问题,请参考以下文章
如果黑客设法获取我的会话令牌。那么这是否意味着我的帐户可能会遭到入侵?