看起来我们将为Stack Overflow添加CAPTCHA支持。这对于防止机器人、垃圾邮件发送者和其他恶意脚本活动是必要的。我们只希望人类在这里发布或编辑东西!

我们将使用JavaScript (jQuery)验证码作为第一道防线:

http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs

这种方法的优点是,对于大多数人来说,CAPTCHA永远不会可见!

然而,对于禁用JavaScript的人,我们仍然需要一个备用方案,这就是棘手的地方。

我为ASP编写了一个传统的CAPTCHA控件。NET,我们可以重复使用。

但是,我更倾向于使用一些文本化的东西,以避免为每个请求在服务器上创建所有这些图像的开销。

我见过这样的事情…

ASCII文本验证码:\/\/(_)\/\/ 数学难题:7减3乘以2等于多少? 小问题:癞蛤蟆和冰棍,哪个更好吃?

也许我只是在风车这里倾斜,但我希望有一个更少的资源密集型,非图像为基础的<noscript>兼容的验证码,如果可能的话。

想法吗?


当前回答

Mollom是另一个可能感兴趣的askimet类型服务。来自那些编写drupal /运行acquia的人。

其他回答

@rob

蜜罐验证码怎么样? 哇,这么简单!看起来不错!尽管他们强调了无障碍问题。你认为这在SO会是一个问题吗?我个人觉得很难想象开发人员/程序员阅读屏幕有困难到需要屏幕阅读器的地步。

有些开发者不仅是法律上的盲人,而且是100%的盲人。手杖和辅助犬。我希望这个网站能支持他们在一个合理的方式。

然而,使用蜜罐验证码,您也可以放置一个隐藏的div,告诉他们将字段留空。如果他们填了,你也可以把它放在错误信息中,所以我不确定可访问性在这里有多大的问题。这肯定不太好,但也可能更糟。

一种选择是带外通信;服务器可以向用户发送即时消息(或短信?),然后他/她必须在验证码字段中输入该消息。

这给用户带来了一个“非此即彼”的要求——要么你必须启用JavaScript,要么你必须登录到你所选择的IM服务。虽然它可能不像上面的一些其他解决方案那么灵活,但它适用于绝大多数用户。

那些拥有编辑权限的人,可以随意添加优点/缺点,而不是单独提交回复。

优点:

可访问:许多IM客户端支持读取传入消息。一些基于web的客户端将与屏幕阅读器一起工作。

缺点:

javascript禁用的用户现在依赖于OpenID之上的另一个服务的正常运行时间。 机器人将导致额外的服务器资源使用(发送带外通信),除非实现额外的保护

如果你倾向于问题/答案解决方案,我曾经向用户展示了3-5个随机问题,他们可以从中选择,然后回答来证明他们是人类。该列表在每次页面加载时排序不同。

Mollom是另一个可能感兴趣的askimet类型服务。来自那些编写drupal /运行acquia的人。

@lance

谁说每个请求都必须在服务器上创建所有映像?也许你可以有一个静态的图片列表,或者从Flickr中获取它们。我喜欢“点击小猫”验证码的想法。http://www.thepcspy.com/kittenauth。

如果从静态图像列表中提取,绕过CAPTCHA就变得很简单,因为人类可以对它们进行分类,然后机器人就可以轻松地回答这些挑战。即使机器人不能回答所有问题,它仍然可以发送垃圾邮件。它只需要能够回答一小部分的验证码,因为当尝试失败时,它总是可以重试。

这实际上也是谜题的问题,因为拥有大量挑战是非常困难的。