Php 防止匿名投票游戏的最佳方法
我即将为我的网站写一个投票方法。我想要一种方法来阻止人们对同一件事投两次票。到目前为止,我的想法是:Php 防止匿名投票游戏的最佳方法,php,ajax,voting,voting-system,Php,Ajax,Voting,Voting System,我即将为我的网站写一个投票方法。我想要一种方法来阻止人们对同一件事投两次票。到目前为止,我的想法是: 投票完成后删除cookie(易受多浏览器游戏影响) 每次投票记录IP地址(在代理/公司环境中此操作将失败) 强制登录 我的网站本身不是基于账户的,尽管它聚合了Twitter数据,所以可以使用Twitter作为身份识别的手段 现有的系统有哪些?它们是如何做到这一点的?最好是禁止匿名投票。如果用户被迫登录,您可以在每次投票时保存用户ID,并确保他/她只投票一次 cookie方法非常脆弱,因为co
- 投票完成后删除cookie(易受多浏览器游戏影响)
- 每次投票记录IP地址(在代理/公司环境中此操作将失败)
- 强制登录
现有的系统有哪些?它们是如何做到这一点的?最好是禁止匿名投票。如果用户被迫登录,您可以在每次投票时保存用户ID,并确保他/她只投票一次
cookie方法非常脆弱,因为cookie很容易被删除。IP地址方法有您自己描述的缺点。实现用户身份验证系统的一个步骤,但并非所有的复杂性: 让用户输入他们的电子邮件地址并确认他们的投票,你不会根除游戏,但会让玩家更难注册另一个电子邮件地址,然后投票等等 也许值得多走一步
让我们知道您的最终目标。不同的方法,只是提供一个替代方案: 假设大多数人知道如何表现,或者只是不介意表现不好,那么就追溯一下选票。这也将保持投票对选民的低调 因此,设置cookie,记录每次投票,然后(或按时间间隔?)根据cookie值、IP/UserAgent组合等检查结果并删除重复项 我认为,不主动阻止来自同一个人的多张选票,可以将使用高度技术性的规避方法的情况降到最低,并且结果很容易清理
另一方面,您可能无法在用户界面上实时显示实际的投票数,或者当一堆选票恰好丢失时,您会感到惊讶。如果您想使用cookies,请使用 evercookie是一个可用于生成 浏览器中持久性极高的Cookie。它的目标 是在客户删除标准后识别客户 Cookie、Flash Cookie(本地共享对象或LSO)和 其他的 evercookie通过将cookie数据存储在 上提供的几种类型的存储机制 本地浏览器。此外,如果evercookie已找到 用户已删除任何有问题的cookie类型 使用每个可用机制重新创建它们
当然,多浏览器作弊不会受到影响。虽然我自己可能不会这么做,但看看这些cookie,它们很难摆脱:
我处理这个问题和打击投票欺诈的另一种方式是,要求提供一个电子邮件地址,然后一个人仍然可以投票,但在他们点击电子邮件中的链接之前,选票不会计算在内。这比完全登记更容易,但在消除大多数欺诈性投票方面仍然非常有效 > P>如果你不想强制用户登录,请考虑这个Eng饼干,但是强制java脚本来启用日志记录! 这个evercookie很容易阻止,因为它是基于java脚本的。攻击者可能不会使用浏览器,因为通过curl,他可以生成大量请求。howewer这类工具通常缺乏javascript支持
邮件更容易作弊。当您运行自己的服务器时,您可以接受所有电子邮件地址,因此您将有几乎无限的地址池可供使用 你想保护自己免受什么类型的游戏的伤害?有人创造了几个机器人,然后用数千(数百万)个请求轰炸你?还是一个没有更好的事情要做却试图获得10-20票的人 是的,我知道:两者都有,但你在这里最关心的是哪一个 使用验证码和基于电子邮件的投票(发送电子邮件链接以验证投票)可以很好地对抗机器人。但是人类或多或少可以利用电子邮件系统(正如我在一个答案中所评论的那样,并在这里再次发布) 我拥有一个自定义域,我可以在其中有任何我想要的电子邮件 另一个例子:如果你的电子邮件是 myuser*@gmail.com*,您可以使用 “我的用户+1@gmail.com" 我的用户+2@gmail.com,等(加号和后面的文字) 它被忽略,并被交付 您的帐户)。您还可以包括 您的用户名中的点(我的。user@gmail.com). (仅此而已 在gmail地址上工作!) 为了保护人类免受伤害,我不知道是否使用cookie,但它可能是一个不错的选择。使用OAuth与twitter、FB和其他网络集成也可能很好 另外,请记住:要求某人发送电子邮件进行投票会吓跑很多人!你会得到更少的选票
另一个选项是限制系统每分钟(或每小时或任何其他时间)从每个ip接受的投票数。为了防止分布式攻击,请限制您的系统在一段时间内接受的投票总数。我是否可以使用他们的twitter登录名作为我网站的登录名?所以只要他们登录到twitter,他们就可以访问我的网站?@Chris,是的。最简单的方法可能是使用第三方SSO提供程序,例如不总是容易删除。请注意:如果您访问evercookie网站,它将(尝试)在您的浏览器上放置evercookie。最近Bruce Schneier在一篇帖子上发表的评论包含了对该网站的一个有趣的讨论:@APC为什么要发出警告?我认为大多数网站在访问时都会试图在我的浏览器上添加cookieevercookies的要点是,即使您已将浏览器设置为不接受第三方Cookie,该软件也会尝试将其uber Cookie之一放在您身上。当然