Asp.net 如何防止用户多次投票?

Asp.net 如何防止用户多次投票?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我想防止用户在我的网站上投票不止一次,我用了两种方法来做到这一点,但没有人能做到这一点 使用cookie 问题是:用户可以删除cookie并一次又一次地返回投票 使用数据库表。 问题是:用户不应该被迫在我的网站上注册 那么,我该如何解决这个问题呢?我认为你没有很多选择,因为你没有强迫用户注册。您需要使用会话或cookie。正如评论中指出的,您还可以检查IP地址。但如果目标受众使用ISP分配的动态IP地址,则此解决方案也会失败 如果可能的话,您可以要求用户使用他们的facebook/google

我想防止用户在我的网站上投票不止一次,我用了两种方法来做到这一点,但没有人能做到这一点

  • 使用cookie
    问题是:用户可以删除cookie并一次又一次地返回投票

  • 使用数据库表。
    问题是:用户不应该被迫在我的网站上注册

  • 那么,我该如何解决这个问题呢?

    我认为你没有很多选择,因为你没有强迫用户注册。您需要使用会话或cookie。正如评论中指出的,您还可以检查IP地址。但如果目标受众使用ISP分配的动态IP地址,则此解决方案也会失败


    如果可能的话,您可以要求用户使用他们的facebook/google id注册,就像stackoverflow所做的那样,

    没有一种绝对正确的方法可以从web应用程序中实现您想要的功能,特别是不需要用户注册

    你有两个答案,你需要决定哪一个最好。没有任何选择是防弹的。这一切都是关于放慢他们的速度,以及什么样的效率水平对你来说是可以接受的

    饼干通常是可以接受的方法。是的,cookies是可以清除的,但是如果防止重复投票的愿望如此重要,那么注册是防止重复投票的唯一有效方法。任何其他机制都可能被那些想要的人打败。你可以使用类似的东西,但我一般认为这样做不是一个好的做法。如果你让你的注册过程简单而有效,一些用户会这么做

    一个IP地址就像大多数重新区分的IP地址不是静态分配的一样有缺陷。有人可以重置他们的调制解调器,并获得一个新的IP地址。更糟糕的是,有人可能会重置调制解调器,获得已经访问过该站点的IP地址,并且无法投票。另一个场景是NAT背后的用户。如果200人与NAT共享一个IP,那么其中只有一人能够投票


    不过,你可以在IP地址上发挥创意。继续使用cookie,因为这样会很有效。如果您开始检测来自同一IP地址的多个投票(因为他们清除了Cookie),则显示。如果不是有人试图滥用该系统,那么他们仍然有机会投票。这将有助于击败自动投票,并大大降低用户滥用投票系统的速度,让他们觉得不值得花时间。这也是可以克服的,这是你可以接受的有效性水平。即使注册也不是100%有效,但可能是最有效的。什么会阻止某人多次使用不同的电子邮件地址注册?

    此站点(堆栈溢出)通过注册正确。IP是一个非常糟糕的主意,因为所有支持代理/服务器的人都不能投票。大多数人都有多个浏览器,你甚至不需要删除投票cookie来再次投票,只需使用另一个浏览器即可。如前所述,OpenID是影响最小、安全性最高的路由。他们可以通过多个帐户绕过这个问题。

    @Ben-如果用户ISP提供动态IP,那么?@Ben如果用户从公司计算机上投票怎么办?这个国家的所有用户都将禁止投票!当然,要求他们提供他们的社会保险号码、出生日期和信用卡号码。如果你不想让他们登记你的网站,你可以考虑使用OpenID?可能的副本:@ DeBaskOK,我认为这个解决方案将是最好的。