看起来我们将为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>兼容的验证码,如果可能的话。

想法吗?


当前回答

我曾经在一个朋友的网站上看到过这个。他卖了20美元。这是ASCII艺术!

http://thephppro.com/products/captcha/

  .oooooo.         oooooooo 
 d8P'  `Y8b       dP""""""" 
888      888     d88888b.   
888      888 V       `Y88b '
888      888           ]88  
`88b    d88'     o.   .88P  
 `Y8bood8P'      `8bd88P'   

其他回答

如果没有一个真正的验证码作为第一道防线,你是不是仍然容易受到垃圾邮件发送者编写浏览器脚本的攻击(使用VB和IE很简单)?即加载页面,浏览DOM,点击提交按钮,重复…

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

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

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

优点:

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

缺点:

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

有史以来最好的验证码!也许你需要像这样的东西来注册,以防止庸人进入。

也许社区可以想出一些好的基于文本的验证码?

然后我们可以根据那些得票最多的人来列出一个好的名单。

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