2

我一直在开发一个可能容易受到用户滥用的网络应用程序,尤其是垃圾评论/帐户。我知道 RECAPTCHA 会针对假用户处理机器人,但它不会对那些创建帐户并以某种方式将垃圾评论放在自动驾驶仪上的用户做任何事情(就像我在 Twitter 上无数次看到的那样) .

我想到的解决方案是让任何用户标记另一个用户,然后在只有管理员可以访问的用户索引操作上出现一个标记用户列表(布尔属性)。然后被标记的用户可以成为禁止(另一个布尔属性)或取消标记的候选者。被禁止的用户仍然可以访问该站点,但权限将大大降低。由于某些原因,我不想完全删除用户。

然而,当我想到这一点时,我意识到通过标记用户列表来决定哪些用户应该被禁止或取消标记对于管理员来说可能非常耗时。如果没有雇用某人来对用户进行取消标记/禁止,是否有更自动化和更优雅的方式来解决这个问题?

4

3 回答 3

8

我将创建一个名为滥用的表,其中包含报告的用户和提交报告的用户。我建议不要使用标记的布尔字段,而是使用计数器缓存列,例如“abuse_count”。当此列达到预定义值时,您可以自动“禁止”用户。

于 2009-12-18T23:19:30.610 回答
1

在“Web 2.0”之前,网站由管理员管理。现在,目标是让社区自我调节。StackOverflow 本身就是一个很棒的案例研究。信誉系统使用户能够在证明自己值得信赖时承担更多的“管理”任务。如果您允许用户互相标记,那么您已经在这条路上了。至于系统的细节(谁可以标记、取消标记和禁止),我想说你应该看看各种成功的在线社区(如 StackOverflow),看看它们是如何工作的,以及它们有多成功。最后可能需要一些试验和错误,因为所有社区都不同。

如果您想编写一些代码,您可能会创建一个脚本来查找垃圾邮件发送者的典型使用模式(例如,在多个页面上发布的相同评论),尽管我认为目标应该是发展一个为您执行此操作的社区。这可能更多是关于计划而不是编程。

于 2009-12-18T23:18:46.277 回答
1

如果一些老练的垃圾邮件发送者觉得奖励足够高,他们很乐意花时间破解您的验证码。您还应该考虑查看诸如 akismet 之类的垃圾邮件服务器,它有一个很棒的 rails 插件 ( https://github.com/joshfrench/rakismet )。

还有其他替代品,例如 defensio ( https://github.com/thewebfellas/defensio-ruby ) 以及我曾经发现的一个 gem,它在检测常见的博客垃圾邮件方面效果很好,但我不能一辈子我再也找不到了。

于 2010-01-22T21:53:12.343 回答