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

想法吗?


当前回答

Asirra是史上最可爱的验证码。

其他回答

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

我个人不喜欢验证码,它损害了可用性,并不能解决使有效用户无效的安全问题。

我更喜欢服务器端的机器人检测方法。由于您拥有有效用户(多亏了OpenID),您可以阻止那些不“行为”的用户,您只需要识别机器人的模式,并将其与典型用户的模式进行匹配,然后计算两者之间的差异。

Davies, N., Mehdi, Q., Gough, N.:使用游戏引擎和AI工具创建和可视化智能NPC http://www.comp.glam.ac.uk/ASMTA2005/Proc/pdf/game-06.pdf

Golle, P., Ducheneaut, N.:防止机器人玩在线游戏<——ACM门户

Ducheneaut, N., Moore, R.:《游戏的社交面:大型多人在线游戏中的互动模式研究》

当然,大多数引用都指向电子游戏机器人检测,但这是因为这正是我们小组题为《机器人战争》的论文的主题: 机器人识别的游戏探索。它没有出版,只是学校的一个项目。如果你感兴趣,我可以给你发邮件。事实是,即使它是基于电子游戏机器人检测,你也可以将其推广到网页上,因为用户与使用模式有关。

我非常赞同MusiGenesis的这种方法,因为我在自己的网站上也使用了这种方法,而且效果不错。看不见的CAPTCHA过程是阻止大多数脚本的一种不错的方法,但这仍然不能阻止脚本作者对您的方法进行逆向工程,并在javascript中“伪造”您正在寻找的值。

我会说最好的方法是1)建立一个用户,这样你就可以在他们不好的时候阻止他们,2)确定一种算法来检测典型模式和非典型模式的网站使用,3)相应地阻止该用户。

但要确保这不是谷歌能回答的问题。这也显示了一个问题——操作顺序!

虽然类似的讨论开始了:

我们正在一个经常进行数据挖掘的应用程序上尝试这个解决方案:

一个更好的验证码控制(看妈-没有图像!)

你可以在我们的建筑检查搜索中看到它的作用。

您可以查看Source并看到CAPTCHA只是HTML。

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

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