在投票比赛中狩猎作弊者

Bos*_*osh 63 php voting spam-prevention

目前我们正在举办一场非常好的比赛.不幸的是,我们让所有那些正在运行脚本的作弊者自动投票支持他们的参赛作品.我们已经通过手工查看数据库条目看到了一些作弊者 - 例如,使用相同浏览器的5星评级完全是所有70分钟.现在随着用户群的增长,识别它们变得越来越难.

我们到目前为止做了什么:

  1. 我们存储IP和浏览器并将该组合阻止为一小时的时间范围.Cookies不会对这些人有所帮助.
  2. 我们也在使用Captcha,它已被破坏

有谁知道我们如何使用PHP脚本在我们的数据库中找到模式,或者我们如何更有效地阻止它们?

任何帮助将非常感谢...

Ott*_*ger 79

直接反馈消除

这更像是一种可以与许多其他方法结合使用的一般策略.不要让垃圾邮件发送者知道他是否成功.

您可以完全隐藏当前结果,仅显示没有绝对投票数的百分比或延迟显示投票.

  • 亲:对所有方法都很好
  • 骗局:如果欺诈行为很大,百分比显示和延迟将无效

投票标记

也是一般策略.如果您有理由认为投票是由垃圾邮件发送者进行,请计算他们的投票并将其标记为无效并在结尾处删除无效投票.

  • Pro:对所有可检测的垃圾邮件攻击都很好
  • 骗局:歪曲投票,更难设置,误报

验证码

使用验证码.如果你的Captcha坏了,请使用更好的.

IP检查

限制IP地址在一个时间跨度内投票的票数.

  • 专业:对于在浏览器中不断击中F5的随机玩家很好
  • 亲:易于实施
  • Con:对于使用代理服务器的Pharyngulation和精心设计的脚本无用.
  • Con:IP地址有时会映射到许多不同的用户

推荐人检查

如果您假设一个用户映射一个IP地址,则可以通过该IP地址进行投票来限制该数量.然而,这种假设通常只适用于私人家庭.

  • 亲:易于实施
  • 亲:在某种程度上对抗简单的咽喉炎很好
  • Con:通过自动脚本很容易规避

邮件确认

使用电子邮件确认,每个电子邮件只允许一票.手动检查您的数据库,看看他们是否正在使用一次性电子邮件.

请注意,您可以+foo在电子邮件地址中添加用户名.username@example.com并且username+foo@example.com都会将邮件发送到同一个帐户,所以请记住在检查某人是否已经投票时.

  • 亲:对简单的垃圾邮件脚本很好
  • 骗局:难以实施
  • Con:有些用户不喜欢它

HTML表单随机化

随机化选择顺序.他们可能需要一段时间才能找到答案.

  • 亲:反正很高兴
  • 骗局:一旦发现,很容易规避

HTTPS

一种投票伪造方法是从Firefox等有效浏览器捕获http请求并使用脚本模仿它,这在使用加密时不起作用.

  • 亲:无论如何都很高兴
  • 亲:对非常简单的脚本很好
  • 骗局:设置起来比较困难

代理检查

如果垃圾邮件发送者通过代理投票,您可以检查X-Forwarded-For标头.

  • Pro:对使用代理的更高级脚本更好
  • Con:一些合法用户可能会受到影响

缓存检查

尝试查看客户端是否加载了所有未缓存的资源.许多垃圾邮件不会这样做.我从来没有试过这个,我只是知道通常不会通过投票网站来检查.

一个例子是嵌入<img src="a.gif" />你的html,a.gif是一些1x1像素的图像.然后,你必须设置HTTP标头请求GET /a.gifCache-Control "no-cache, must-revalidate".您可以与您设置的Apache HTTP头.htaccess文件中像这样.(感谢Jacco)

  • 亲:据我所知,这是一种不常见的方法
  • 骗局:稍微难以设置

[编辑2010-09-22]

Evercookie

  • 所谓的evercookie可用于跟踪基于浏览器的垃圾邮件发送者


dus*_*oft 6

你试过做浏览器指纹识别吗?从EFF检查这个开源: https: //panopticlick.eff.org/可以用来识别一个类似于世界500-1500的人(!).


shu*_*lov 4

您可以在投票表中添加验证码。还需要电子邮件确认将会很有用