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

想法吗?


当前回答

我想他们正在研究节流。对于500+ rep的用户禁用CAPTCHA并为攻击者重置rep会更有意义。

其他回答

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

我更喜欢服务器端的机器人检测方法。由于您拥有有效用户(多亏了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)相应地阻止该用户。

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

为什么不设置简单的编程问题,用户可以回答他们最喜欢的语言-然后在服务器上运行代码,看看它是否有效。通过在不同的随机文本上运行答案来避免人工验证码农场。

例子: “从- s = hihiuhi@ewfwef.cfwe提取域名”

用Python回答: return = etc."

类似的领域知识,其他子网站。

所有这些都有可以自动测试的标准公式,但使用随机字符串或值进行测试。

显然,这个想法有很多缺陷;)

另外,每5分钟只允许一次登录尝试。

If the main issue with not using images for the captcha is the CPU load of creating those images, it may be a good idea to figure out a way to create those images when the CPU load is "light" (relatively speaking). There's no reason why the captcha image needs to be generated at the same time that the form is generated. Instead, you could pull from a large cache of captchas, generated the last time server load was "light". You could even reuse the cached captchas (in case there's a weird spike in form submissions) until you regenerate a bunch of new ones the next time the server load is "light".

不是最精致的反垃圾邮件武器,但是微软支持:

Nobot-Control (AjaxControlToolkit的一部分)。

NoBot可以通过违反上述任何技术进行测试:快速回发、多次回发或禁用浏览器中的JavaScript。

演示:

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/NoBot/NoBot.aspx