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

想法吗?


当前回答

把它扔出去。我有一个简单的数学问题在我的联系方式之一,简单地问

什么是[数字1-12]+[数字1-12]

我可能一个月收到5-6封垃圾邮件,但我没有那么多流量。

其他回答

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

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

我的解决方案是将表单放在一个单独的页面上,并将时间戳传递给它。在该页上,我只在时间戳有效的情况下显示表单(不要太快,也不要太旧)。我发现机器人总是会直接点击提交页面,只有人类才能正确导航。

不会工作,如果你有内容页本身的形式,就像你现在做的,但你可以显示/隐藏链接到基于NoScript的特殊提交页面。对于这么小比例的用户来说,这是一个小小的不便。

令人困惑的一件事是谷歌,显然是世界上拥有最多CS博士的公司,他们的验证码被破坏了,而且似乎没有采取任何措施。

将一个数学问题发布为IMAGE,为了清晰起见,可能会使用附图。

只是图像中清晰可见的文本。

(2+5)*2

我认为我们必须假设这个网站会经常受到有针对性的攻击,而不仅仅是一般的漂移机器人。如果它成为程序员搜索的第一个热门,它将引来大量的火力。

对我来说,这意味着任何验证码系统都不能从重复的问题列表中提取答案,而人类可以手动将这些问题输入机器人,而且机器人也猜不到。