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

问题描述 投票:0回答:8

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

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

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

networking voting-system
8个回答
21
投票

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

添加的一个好处是不要向用户表明他们的投票没有被计算在内,而只是显示结果,或者感谢他们的投票。如果不给出特定的错误,就会变得更困难,有时甚至不会被有问题的用户注意到。


12
投票

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


4
投票

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

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

您到底要问什么问题?


2
投票

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

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


1
投票

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


0
投票

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


0
投票

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

例如:

创建投票表单时,您会创建一个随机哈希并将其存储在数据库中,并将其作为

form
字段放入
hidden
中。 (可能想向哈希数据库添加一个日期字段,以便可以清理未使用的哈希值)

然后,当您获得投票

POST
请求时,您可以检查提供的哈希是否在数据库中,并将其从数据库中删除,这样就不能再次使用。


缺点:
如果投票页面流量较高,可能会以较高的 IO 负载数据库。
无法将页面缓存为计划 html,因此会给网络应用程序带来更大的压力。


-3
投票

如果您这么认为,我们可以帮助您实现梦想。所有投票均来自不同的 IP 地址。这些选票是最安全的选票。我们将根据您的需求为您投票,让您成为获胜者。 购买不同的竞赛选票

© www.soinside.com 2019 - 2024. All rights reserved.