每个IP地址限制1票?

时间:2009-08-07 19:55:52

标签: networking voting-system

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

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

感谢。我认为,对于我的情况,最好不要限制每个IP地址1个投票。

7 个答案:

答案 0 :(得分:18)

我建议不要采用IP方法。当我在你的一些大型ISP重复使用IP(AOL ...)之前看到这个,但如果你确实使用IP地址,请使用数据库来跟踪它们。一种快速的方法是使它成为一个独特的密钥并将异常视为“已经投票”。

要添加的一件好事是不向用户显示他们的投票未被计算,只显示结果,或感谢他们投票。通过不提供该特定错误,您的问题用户会更难,有时甚至不会注意到。

答案 1 :(得分:12)

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

答案 2 :(得分:4)

通常,是的,您要做的是拥有一个投票数据库表,只需存储选择+ IP地址 - 然后在插入时,执行数据库查询以查看是否已存在具有给定IP的条目。

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

你问的问题究竟是什么?

答案 3 :(得分:2)

我一直这样做的方法是将用户代理和IP地址连接成MD5哈希(在某些情况下,这将允许来自同一IP的人投票,只要他们使用不同的浏览器),并存储作为投票数据库的“指纹”,并为其添加一个唯一的密钥。正如IPX Ares所说,从那里你可以捕获重复的密钥异常,你应该很好。

如果您希望允许人们每天投票一次,您还可以将Ymd附加到该“指纹”或其他变体以允许每天x小时或x金额。

答案 4 :(得分:1)

是的,使用数据库。不要依赖cookie,可以轻松删除它们 IMO,到目前为止,基于IP的语音限制是最好的选择。

答案 5 :(得分:0)

IP地址有其局限性,正如我们从上面所指出的那样,但浏览器还有许多其他特征可以阻止错误的选民。例如,BrowserID对于几乎所有浏览器都是不同的。您可以使用BrowserID和IP地址的组合来创建唯一ID。

答案 6 :(得分:0)

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

例如:

创建投票表单时,您可以创建一个随机哈希并将其存储在数据库中,并将其作为form字段放在hidden中。 (可能希望在哈希数据库中添加日期字段,以便清理未使用的哈希值)

然后,当您收到投票POST请求时,您可以检查提供的哈希值是否在数据库中,并将其从数据库中删除,因此无法再次使用。


<强> CONS:
如果投票页面具有高流量,则可能使用高IO加载数据库 无法将页面缓存为计划html,因此它会给Web应用程序带来更多压力。