Networking 每个IP地址限制1次投票?

Networking 每个IP地址限制1次投票?,networking,voting-system,Networking,Voting System,我真正想要的是限制每人投1票,但我能想到的下一个最好的办法是限制每个IP地址投1票,以防止恶意用户/黑客对我公司的投票系统进行严重攻击。我正在考虑使用数据库来跟踪IP地址 更新: 很抱歉第一次不清楚,阿鲁昂。我想知道的是,每个IP地址限制1票是否是限制每人1票的好策略。基本上,我想知道一个唯一的IP地址是否大致等于一个人。人们已经提到,代理和路由器重复使用ip地址,所以不幸的是,许多人可以使用相同的ip地址 谢谢。我认为,就我的情况而言,最好不要限制每个ip地址1票。是的,使用数据库。不要依赖c

我真正想要的是限制每人投1票,但我能想到的下一个最好的办法是限制每个IP地址投1票,以防止恶意用户/黑客对我公司的投票系统进行严重攻击。我正在考虑使用数据库来跟踪IP地址

更新: 很抱歉第一次不清楚,阿鲁昂。我想知道的是,每个IP地址限制1票是否是限制每人1票的好策略。基本上,我想知道一个唯一的IP地址是否大致等于一个人。人们已经提到,代理和路由器重复使用ip地址,所以不幸的是,许多人可以使用相同的ip地址


谢谢。我认为,就我的情况而言,最好不要限制每个ip地址1票。

是的,使用数据库。不要依赖cookies,它们很容易被删除。

到目前为止,基于IP的voiting限制是最好的选择。

一般来说,是的,您要做的是有一个用于投票的数据库表,并简单地存储choice+IP地址-然后在插入时,执行DB查询以查看给定IP是否已经存在条目

理想的解决方案是将投票与用户帐户绑定,而用户帐户又与更具体的存在(如信用卡、手机或其他不太容易倍增的身份来源)相关联


你问的问题到底是什么?

如果你使用IP地址,那么你将限制大多数公司只有一票,因为他们通过防火墙或代理服务器路由所有出站互联网流量。我们在几年前就这样做了,发现所有AOL流量都来自5个ip地址。

我建议不要使用ip方法。当我在之前看到这个的时候,你们的一些大型ISP经常重用IP(AOL…),但是如果你确实使用IP地址,请使用数据库来跟踪它们。一种快速的方法是将其设置为唯一键,并将异常捕获为“已投票”


要添加的一件好事是,不要向用户显示他们的投票未被统计,只需显示结果,或者感谢他们的投票。如果不给出具体的错误,就更难了,有时问题用户甚至没有注意到。

IP地址有其局限性,正如我们在上文中所指出的,但浏览器还有许多其他特性,可能会阻碍恶意投票者。例如,BrowserID对于几乎每个浏览器都是不同的。您可以使用BrowserID和IP地址的组合来创建唯一的ID。

我一直采用的方法是将用户代理和IP地址合并到MD5哈希中(在某些情况下,这将允许来自相同IP的人投票,只要他们使用不同的浏览器),并将其存储为“指纹”对于投票,请访问数据库并向其添加唯一键。正如IPX Ares所说,从那里您可以捕获重复密钥异常,并且您应该很好


如果你想让人们每天投票一次,你也可以将Ymd附加到“指纹”中,或其他变体,允许每小时x个金额或每天x个金额。

另一种“帮助”避免作弊的方法是在表单中提供1次使用哈希,然后在计算投票数之前检查该哈希是否有效

例如:

当您创建投票表单时,您会创建一个随机散列并将其存储在数据库中,然后将其作为
隐藏的
字段放入
表单中。
(可能希望向哈希数据库添加日期字段,以便清除未使用的哈希)

然后,当您收到投票
POST
请求时,您可以检查所提供的哈希是否在数据库中,并将其从数据库中删除,以便不能再次使用


缺点:
如果投票页面具有高流量,则可能以高IO加载数据库。

无法将页面缓存为plan html,因此会给web应用程序带来更大的压力。

代理服务器和动态ip地址的存在破坏了您的计划。但总比没有好。还有NAT。和缓存服务器(有时)。为了防止临时用户偷偷进入额外的投票,这总比什么都没有好。为了防止“恶意用户/黑客”,这与什么都不一样。也许你可以将这个问题重新命名为。“如何防止来自同一用户的多张在线投票”?你和AOL也有问题吗?我发现另一件事很有效。。。如果用户有cookie,则为其添加一个递增的计时器延迟。当然,他们可以删除它,但同样,没有表明你实际上在做任何事情,只是每次慢慢地花更长的时间去投票会减慢投票脚本的速度,使其无法真正工作。(您可以对IP地址执行相同的操作)。注意:对于用户名/密码,这也是一种很好的技术,而不是锁定帐户。我认为即使发布cookie数据,也不会自动编写投票脚本。除了javascript(在浏览器中),我还没有看到任何默认情况下可以这样做的语言。ruby、php、python似乎都会让你手动将cookie头添加到请求中。-1对于基于IP的阻塞:不幸的是,互联网上有大量站点在单个IP后面有许多用户。是的,但是如果你想抑制投票作弊,唯一有效的方法是。@AndrejsCainikovs:在所有情况下,我们都有IP地址作为补充选项,作弊者总是有取之不尽的IP地址可供使用。所以,这可能有助于对付我的弟弟。那还不错;但请记住,这只是一个权宜之计,不能解决悬而未决的问题。这有点改善,但仍然不能很好地解决企业用户的问题。在一家公司中,很可能有许多人拥有相同的用户代理,并且在显示为一个IP地址的防火墙后面。