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

想法吗?


当前回答

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

其他回答

简单的数学并不是答案——垃圾邮件发送者甚至不需要编写一个简单的解析器。谷歌将为他们做这件事,即使你使用单词而不是数字,所以它只需要在谷歌上快速搜索,它就完成了。

它也可以很容易地进行文本到数字的转换。

似乎有某种错误在SO的渲染,因为它只显示第一个链接时,这是张贴,即使预览工作正常。第二个链接是-进入谷歌,搜索“1 * 42”

Make an AJAX query for a cryptographic nonce to the server. The server sends back a JSON response containing the nonce, and also sets a cookie containing the nonce value. Calculate the SHA1 hash of the nonce in JavaScript, copy the value into a hidden field. When the user POSTs the form, they now send the cookie back with the nonce value. Calculate the SHA1 hash of the nonce from the cookie, compare to the value in the hidden field, and verify that you generated that nonce in the last 15 minutes (memcached is good for this). If all those checks pass, post the comment.

This technique requires that the spammer sits down and figures out what's going on, and once they do, they still have to fire off multiple requests and maintain cookie state to get a comment through. Plus they only ever see the Set-Cookie header if they parse and execute the JavaScript in the first place and make the AJAX request. This is far, far more work than most spammers are willing to go through, especially since the work only applies to a single site. The biggest downside is that anyone with JavaScript off or cookies disabled gets marked as potential spam. Which means that moderation queues are still a good idea.

从理论上讲,这可以作为通过模糊性的安全,但在实践中,这是很好的。

我从未见过垃圾邮件发送者试图破解这种技术,尽管可能每隔几个月我就会收到一个手动输入的主题垃圾邮件条目,这有点怪异。

将其绑定到聊天室将是一种有趣的验证码方式。一种活生生的图灵测试。显然,这需要有人在线提问。

请打电话给xxxxx,让我们谈谈你那里的天气。

但是,现在的发展太快了,利润导向也太大了,对我们选择的服务提供商来说,即使是一个电话也太贵了(时间很宝贵)。

我们接受了大部分时间与机器交谈。

悲伤的时光...

我有一个vBulletin论坛,收到了大量的垃圾邮件。添加一个额外的规则解决了这一切;让人们输入一个单词的大写字母。由于我们的网站名为“TrefPuntMagic”,他们不得不输入“TPM”。我知道它不是动态的,如果一个垃圾邮件制造者想要真正的垃圾邮件我们的网站,他们可以做一个工作,但我们只是许多许多vBulletin论坛他们的目标,这是一个简单的解决方案。