我一直在开发一个易受用户滥用的网络应用,尤其是垃圾评论/帐户。我知道,就假冒用户而言,RECAPTCHA会照顾机器人,但对于那些创建帐户并以某种方式将他们的垃圾评论放在自动驾驶仪上的用户来说,它不会做任何事情(就像我在Twitter上看过无数次)
我想到的解决方案是让任何用户标记另一个用户,然后让一个标记用户列表(布尔属性)出现在只能由管理员访问的用户索引操作上。然后,已标记的用户可以成为禁止(另一个布尔属性)或解除标记的候选者。被禁止的用户仍然可以访问该网站,但权限将大大降低。出于某些原因,我不想完全删除用户。
然而,当我想到这一点时,我意识到通过标记用户列表来决定哪些应该被禁止或未标记可能对管理员来说非常耗时。如果没有聘请某人来解决/禁止用户,是否有更自动化和更优雅的方式来解决这个问题?
答案 0 :(得分:7)
我会创建一个名为abuses的表,其中包含报告的用户和提交报告的用户。我建议使用一个计数器缓存列,例如“abuse_count”,而不是标记的布尔字段。当此列达到预定义值时,您可以自动“禁止”用户。
答案 1 :(得分:1)
在“Web 2.0”之前,网站由管理员主持。现在,目标是让社区适应自己。 StackOverflow本身就是一个很棒的案例研究。 reputation system使用户能够承担更多“管理”任务,因为他们证明自己是值得信赖的。如果您允许用户互相标记,那么您已经走上了这条道路。至于系统的细节(谁可以标记,取消标记和禁止),我会说你应该看看各种成功的在线社区(比如StackOverflow),看看它们是如何工作的,以及它们是多么成功。最后,它可能需要一些反复试验,因为所有社区都不同。
如果您想编写一些代码,您可以创建一个脚本来查找垃圾邮件发送者的典型使用模式(例如,在多个页面上发布相同的评论),但我认为目标应该是发展一个社区,您。这可能更多是关于规划而不是编程。
答案 2 :(得分:1)
如果一些老练的垃圾邮件发送者认为奖励足够高,他们很乐意花时间打破验证码。您还应该考虑查看垃圾邮件服务器,例如akismet,它有一个很棒的rails插件(https://github.com/joshfrench/rakismet)。
还有其他替代方案,例如defensio(https://github.com/thewebfellas/defensio-ruby)以及我曾经发现的一个宝石,它在检测常见的博客垃圾邮件方面做得非常好,但我不能再为我的生活找到它了