看起来我们将向Stack Overflow添加CAPTCHA支持。 这对于防止机器人,垃圾邮件发送者和其他恶意脚本活动是必要的。 我们只希望人类在这里发布或编辑内容!
我们将使用JavaScript(jQuery)CAPTCHA作为第一道防线:
http://docs.jquery.com/Tutorials:Safer_Contact_Forms_Without_CAPTCHAs
这种方法的优点是, 对于大多数人来说,CAPTCHA永远不可见!
但是,对于禁用JavaScript的用户,我们仍然需要回退,这就是它变得棘手的地方。
我为ASP.NET编写了一个传统的CAPTCHA控件 ,我们可以重用它。

但是,我更喜欢使用文本内容来避免在每次请求时在服务器上创建所有这些图像的开销。
我见过像......
- ASCII文本验证码:
\\/\\/(_)\\/\\/
- 数学难题:什么是7减3倍2?
- 琐事问题:什么味道更好,蟾蜍或冰棍?
也许我只是在这里倾斜风车,但如果可能的话,我想要一个资源较少,非基于图像的<noscript>
兼容的CAPTCHA。
想法?
#1楼
虽然开始了类似的讨论 :
我们正在我们的一个经常数据挖掘的应用程序上尝试此解决方案:
您可以在我们的建筑检查搜索中查看它。
您可以查看Source并查看CAPTCHA只是HTML。
#2楼
因此,除了版主之外,所有用户都必须使用CAPTCHA。 [1]
这真是太愚蠢了。 那么有些用户可以编辑网站上的任何帖子,但不能在没有CAPTCHA的情况下发帖? 如果你有足够的rep to downvote帖子,你有足够的代表发布没有CAPTCHA。 如果必须的话,让它更高。 此外,您可以使用大量垃圾邮件检测方法而无需图像识别,因此即使对于未注册的用户,也无需填写那些被遗忘的CAPTCHA表单。
#3楼
对服务器的加密随机数进行AJAX查询。 服务器发回包含nonce的JSON响应,并设置包含nonce值的cookie。 在JavaScript中计算nonce的SHA1哈希值,将值复制到隐藏字段中。 当用户POST表单时,他们现在使用nonce值发回cookie。 从cookie中计算nonce的SHA1哈希值,与隐藏字段中的值进行比较,并验证在过去15分钟内是否生成了该nonce(memcached对此有利)。 如果所有这些检查都通过,请发表评论。
这种技术要求垃圾邮件发送者坐下来确定发生了什么,一旦他们这样做,他们仍然必须发起多个请求并保持cookie状态以获得评论。 另外,如果他们首先解析并执行JavaScript并发出AJAX请求,他们只会看到Set-Cookie
标头。 这比大多数垃圾邮件发送者愿意接受的工作要多得多,特别是因为这项工作仅适用于单个网站。 最大的缺点是任何关闭JavaScript或禁用cookie的人都被标记为潜在的垃圾邮件。 这意味着审核队列仍然是一个好主意。
从理论上讲,这可以通过默默无闻来获得安全性,但在实践中,这是非常好的。
我从来没有见过垃圾邮件发送者努力打破这种技术,虽然可能每隔几个月我就会手动输入一个主题垃圾邮件,这有点怪异。
#4楼
除非我遗漏了什么,否则使用reCAPTCHA会有什么问题,因为所有工作都是在外部完成的。
只是一个想法。
#5楼
最好的验证码! 也许你需要这样的东西来注册以保持riff-raff。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3196006