限制在我们网站上投票的最佳方法是什么?

时间:2009-02-24 12:11:14

标签: language-agnostic

我们的网站上有用户可以投票的文章。限制投票的推荐方法是什么?

实施投票的网站太多,我知道一些可能的解决方案,但我想这是一些基于会话,IP,时间限制等的基本防弹推荐方法。

从浏览器发送投票的最佳方式是什么?基本的GET / POST或AJAX请求?是否有必要使用一些预生成的请求ID?

更新:我们无法使用用户注册。

6 个答案:

答案 0 :(得分:2)

  

[...] 防弹 [...]

Impossible.

按帐户限制将有所帮助 - IP地址远非动态,可轻松更改为远程“安全”。然后,你当然必须再次限制帐户创建..

Stackoverflow做得非常好(最近有关于此的博客文章,"New Question / Answer Rate Limits") - 基本上有帐户,你必须积极参与一段时间才能投票。那么你是受限制的(按帐户),直到你参加了一段时间。然后删除限制,因此您不会惹恼更活跃(更受信任)的用户。

如果你只想防止因果关系,“意外”投票,限制cookie,也可能通过IP(考虑到多个用户可以在一个IP后面)..如果你想尝试并防止滥用,要求您不能单击“注册”的帐户(或者更确切地说,您不能写“点击注册2000次” - 脚本),尽管这并不总是可行(或实际)

答案 1 :(得分:0)

防止重复帖子的最佳方法是仅签名用户投票。这样你就可以将他们的投票存储在一些数据存储(DB)中。

如果您想允许用户匿名投票,请使用浏览器会话。 这样做的缺点是他们可以关闭/重新打开浏览器并重新启动。

我不建议使用IP来限制投票,因为许多用户可以在代理之后,所以看起来他们拥有相同的IP。如果其中一个用户投票,其他用户就不能投票了。

答案 2 :(得分:0)

这可能有助于您的防弹建议请求:Content Voting Database and Application Design

答案 3 :(得分:0)

除非您需要一些严肃的(银行级别)身份验证,否则没有防弹解决方案。也就是说,基本的解决方案是使用会话(cookies)。 IP限制是一个非常糟糕的想法(例如,我与大约20个人共享IP)。

答案 4 :(得分:0)

  • 使用经过身份验证的用户
  • 请勿阻止IP
  • 不要通过Cookie验证投票
  • 如果相同的IP使用不同的帐户多次投票,请尝试使用验证码

如果您想允许未经过身份验证的用户,那么您肯定必须使用验证码来避免机器人。但我仍然认为最好只允许对经过身份验证的用户进行投票。 你可以做一些类似的事情,一个小于1小时/ 2小时的用户不能投票,以避免机器人创建帐户和投票。

答案 5 :(得分:0)

最好的方法应该是user_id,一个用户只能在每次挑战中投票一次,每次挑战都应该有一个唯一的ID。

  • 允许新用户注册。
  • 检查用户是否经过身份验证。
  • 在创建新投票之前,请检查用户是否已在挑战ID中投票。