我们的网站上有用户可以投票的文章。限制投票的推荐方法是什么?
实施投票的网站太多,我知道一些可能的解决方案,但我想这是一些基于会话,IP,时间限制等的基本防弹推荐方法。
从浏览器发送投票的最佳方式是什么?基本的GET / POST或AJAX请求?是否有必要使用一些预生成的请求ID?
更新:我们无法使用用户注册。
答案 0 :(得分:2)
[...] 防弹 [...]
按帐户限制将有所帮助 - 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)
如果您想允许未经过身份验证的用户,那么您肯定必须使用验证码来避免机器人。但我仍然认为最好只允许对经过身份验证的用户进行投票。 你可以做一些类似的事情,一个小于1小时/ 2小时的用户不能投票,以避免机器人创建帐户和投票。
答案 5 :(得分:0)
最好的方法应该是user_id,一个用户只能在每次挑战中投票一次,每次挑战都应该有一个唯一的ID。