你是人类? (或如何防止垃圾邮件)

时间:2008-09-03 16:34:51

标签: captcha

您了解哪些机制可以防止您的网站被匿名垃圾邮件发送者滥用。

例如,假设我有一个人们可以投票的网站。但我希望有人将垃圾邮件一直发送到顶部。所以我发现(a)创建一个帐户,只允许投票一次,(b)CAPTCHA减少垃圾邮件。你知道其他什么方法以及它们有多好用吗?

11 个答案:

答案 0 :(得分:17)

alt text

来自xkcd

答案 1 :(得分:13)

我注意到的最重要的事情是,无论你做什么,你都希望你的系统是独一无二的。您希望攻击者必须为您的特定站点定制自动化程序,而不是仅仅在其上抛出一个几乎可以在任何地方工作的预先存在的脚本。它甚至不必是加密安全的;它只是让你的网站与常规有点不同。

这并不意味着您不能或不应该使用预先构建的验证码小部件。绝对要用其中一个作为起点!它只是意味着你必须在某个地方进行自定义,以便在标准之外发生一些额外的事情,并打破任何通常会使其失败的预先存在的脚本。

如果您的网站变得足够大以至于您的攻击者专门针对它,那么您的简单小定制可能就不再适用了,您可能会做一些更特别的事情并考虑真正的加密等等。但那是一个“好”的问题之一。

答案 2 :(得分:9)

对于CAPTCHA系统,我衷心推荐reCAPTCHA

传统的计算机生成的CAPTCHA将eventually be broken通过开发一个足够智能的系统。例如,here's someone声称打破了以前认为牢不可破的Google CAPTCHA,命中率为30%。根据定义,reCAPTCHA仅显示光学字符识别无法识别的图像。

与此同时,用户的努力将转向共同利益 - 他们通过识别无法自动识别的单词来帮助数字化书籍。

有关详细说明,请参阅here并尝试一下。

答案 3 :(得分:6)

答案 4 :(得分:4)

  • 每次限制每个IP地址的投票数
  • 阻止匿名代理。
  • 投票:如何在“每个会话的基础上”改变表格必须返回的值。一旦“1”表示第一项,“2”表示第二项。然后“77”表示第一项,“812”表示第二项,...可能是场景背后的一些简单数学,但它会阻止用户一遍又一遍地发送相同的HTTP查询。
  • 对我有用的是:使用AJAX表单,而不是简单的HTTP表单。从技术上讲,虚假投票并不复杂,但我写了一个简单的博客软件,它只有垃圾邮件保护机制是通过AJAX提交评论 - 到目前为止没有垃圾邮件。

答案 5 :(得分:4)

我是“隐藏领域”CAPTCHA的粉丝。我不记得我在哪里读过它,但想法是这样的:

  • 正常创建表单
  • 添加一个额外字段但隐藏它(即style="display:none"在周围的div或表格行上)
  • 提交后,如果该字段为空,请执行相应的操作(例如发送电子邮件);如果该字段已填写,那么它是一个机器人提交者

如果用户的浏览器没有处理CSS(或者他们关闭了CSS),这种情况就会失败,这是非常罕见的。

答案 6 :(得分:2)

投票,就像他们在一些电视“人才”节目中所做的那样,并且一直被垃圾邮件发送到银行!

说真的,这是一个非常棘手的问题,有一天(也许很快,如果你听Ray Kurzweil),计算机将进行测试以筛选出人类。我添加到列表中的答案有明显的缺点,但仅仅是为了枚举:审核(让人类进行测试),以及基于IP的跟踪(限制来自主机的投票数)。

答案 7 :(得分:0)

stackoverflow有一些有用的功能;我认为您可以采取的最有用的一步是禁用匿名用户和新帐户投票的能力。这样,没有人可以注册数百个帐户并使用他们的一票来压制其他用户。我要求在一段时间内要求一些帖子或会员资格都是不错的选择。

有人会说你可以允许每个IP地址一次投票来帮助解决这个问题,但是我玩了很多游戏,其中具有无限数量代理的恶意用户违反了基于IP地址的安全性。这是一种威慑,但精明的用户可以轻松解决它。

答案 8 :(得分:0)

这是Human Computation的研究区域。

来自Luis von Ahn的精彩视频: http://video.google.com/videoplay?docid=-8246463980976635143

答案 9 :(得分:0)

如果您还没有看到Best non-image based CAPTCHA?问题的答案中有一些想法。

答案 10 :(得分:0)

我通常使用两者的组合:anonmous用户可以自由浏览所有内容,但如果他想投票,那么他必须注册。

在注册过程中,根据具体情况,我使用optin至邮件(完成注册并确认至少存在邮箱)和/或验证码。

从那时起,您可以决定用户是否可以多次访问或任何其他规则。

顺便说一下,我不喜欢基于IP的限制:在很多情况下,大型组织的网络对所有用户使用的IP很少,因此阻止可能投票的用户的风险很高。