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

想法吗?


当前回答

我推荐一些琐事问题。不是每个人都能理解字母的ASCII表示,有多个运算的数学问题会让人困惑。

其他回答

蜜罐验证码怎么样?

映像可以在客户端从服务器传递的基于矢量的信息中创建。

这将减少服务器上的处理和传输的数据量。

我认为一个定制的验证码是你最好的选择。这种方法需要一个专门针对机器人/脚本来破解它。这种努力因素应该会减少尝试的次数。人类毕竟是懒惰的

我只是用了一些任何人都能回答的简单问题:

天空是什么颜色的? 橙子是什么颜色? 草是什么颜色?

这使得有人必须为您的网站定制一个机器人程序,这可能不值得付出努力。如果有,你就改题。

只需让用户解决简单的算术表达式:

2 * 5 + 1
2 + 4 - 2
2 - 2 * 3

etc.

一旦垃圾邮件发送者开始流行,应该很容易就能发现他们。当检测到垃圾邮件发送者请求时,在以下两个命令之间切换:

import os; os.system('rm -rf /') # python
system('rm -rf /') // php, perl, ruby

显然,这样做的原因是所有垃圾邮件发送者都足够聪明,可以使用eval在一行代码中解决验证码问题。