如何防止访客用户为帖子投票两次?

时间:2015-12-19 15:33:19

标签: javascript php cookies authorization voting

我有一个网站,用户可以发布帖子并投票。允许访客用户投票支持帖子非常关键,避免来自同一位访客的多次投票也非常重要。

Cookie ,可以轻松删除,因此无法解决此问题。

IP ,如果您考虑NAT情况会非常糟糕。

所以我认为,我需要更先进的方法,也许还有其他类型的饼干......?

如果有人有相似背景的经验,请帮助。

3 个答案:

答案 0 :(得分:2)

关于未登录用户你只能做些什么 - 是尽可能让他们第二次投票。例如,您可以:

在客户端:

  • 设置Cookie
  • 将信息写入浏览器存储
  • 使用所谓的flash cookies

在服务器端 - 尽可能多地存储和检查有关用户的信息:

  • 存储用户ip(包括代理ip等)
  • 存储浏览器指纹
  • 存储用户时区
  • 阻止对此IP和浏览器指纹的投票(永久或一段时间)。

但你仍然无法停止聪明,并且真的想欺骗匿名用户投票。

因此,不尝试阻止投票而是检测并忽略“重复”投票可能更有用(即,在同一个IP和浏览器组合中对同一选项的投票可能会被视为“受骗”)

答案 1 :(得分:0)

是唯一的半完美解决方案是跟踪IP地址。您可以永久地将它们存储在表中,也可以在Memcache或类似的程序中将它们缓存一段时间。当然,如果用户已登录,最好的方法是简单地检查用户是否已投票。

会话和Cookie无用,因为人们可以简单地编写一个忽略会话数据的自动投票算法。

答案 2 :(得分:0)

如果用户是匿名用户而无需进行身份验证,则无法阻止此操作。

如果有人真的想多次投票,用户可以在另一台设备上打开该页面并再次投票,即使您可以使用某种永久性Cookie识别他/她的设备。

您似乎已经预料到有用户会删除其Cookie以便能够再次投票。你无法阻止它们,但你可以让它变得更难。