我想阻止用户在我的网站上多次投票,我用两种方法做到这一点,但没有人做得那么好!!
那么,我怎么能解决这个问题呢?
答案 0 :(得分:6)
你有两个答案,你需要决定哪个是最好的。没有选择是防弹的。这一切都是为了减慢它们的速度,以及您可以接受的效果水平。
Cookie通常是可以接受的方式。是的,可以清除cookie,但是如果希望防止重复投票 重要,那么注册是防止它的唯一有效方法。任何其他机制都可能被想要的人击败。您可以使用类似Evercookie的内容,但我一般认为这样做不是一个好习惯。如果您的注册过程简单但有效,一些用户会这样做。
IP地址与大多数重复IP未被静态分配一样存在缺陷。有人可以重置他们的调制解调器,并获得一个新的IP地址。或者更糟糕的是,有人可以重置他们的调制解调器,获得已经访问过该网站的IP地址,并且无法投票。另一种情况是NAT背后的用户。如果有200人与NAT共享IP,那么其中只有一人可以投票。
你可以获得IP地址的创意。继续使用cookie,因为这将是有效的。如果您开始检测来自同一IP地址的多个投票(因为他们清除了Cookie),请显示CAPTCHA。如果不是某人试图滥用该系统,那么他们仍然有机会投票。这将有助于打败自动投票,并减慢用户的速度,滥用您的投票系统是不值得的。这也是可以被击败的,这是你可以接受的有效程度。即使注册也不是纯粹100%有效,但可能是最有效的。什么会阻止某人使用不同的电子邮件地址多次注册?
答案 1 :(得分:5)
我不认为你有很多选择,因为你没有强迫用户注册。您需要使用会话或cookie。正如评论中指出的,您还可以检查IP地址。但如果目标受众使用其ISP分配的动态IP地址,则此解决方案也会失败。
如果可能,您可以要求用户注册他们的facebook / google ID,就像stackoverflow正在进行
答案 2 :(得分:0)
没有一种绝对正确的方法可以从Web应用程序中完成您想要的任务,特别是无需用户注册。
答案 3 :(得分:0)
此网站(Stack Overflow)通过注册做得对。 IP是一个非常糟糕的主意,因为代理/服务器背后的所有人都无法投票。大多数人都有多个浏览器,您甚至不需要删除投票cookie再次投票,只需使用其他浏览器即可。如前所述,OpenID是影响最小的+最高安全路由。他们可以通过多个帐户解决这个问题。