如何防止访客用户对帖子进行两次投票


How to prevent guest users from voting twice for a post?

我有一个网站,用户可以在这里发帖和投票。允许访客用户投票支持一个帖子是非常重要的,避免同一访客多次投票也是非常重要的。

Cookie,可以很容易地删除,所以这不是解决方案。

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

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

如果有人有类似的经历,请提供帮助。

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

在客户端:

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

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

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

等等。

但你仍然无法阻止聪明人和真正想欺骗匿名用户投票的人。

因此,不试图阻止投票,而是检测并忽略"重复"投票可能更有用(即,在特定时间段内,来自同一ip和浏览器组合的同一选项的投票可能被视为"作弊")。

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

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

如果用户是匿名的,并且不必进行身份验证,则无法阻止这种情况。

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

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