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

但是,我更喜欢使用文本内容来避免在每次请求时在服务器上创建所有这些图像的开销.
我见过像......
\/\/(_)\/\/也许我只是在这里倾斜风车,但<noscript>如果可能的话,我希望有一个资源较少,非基于图像的兼容CAPTCHA.
想法?
首先,一点背景:我正在为CodeIgniter实现一个auth + auth系统并不是什么秘密,到目前为止我赢了(可以这么说).但是我遇到了一个非常重要的挑战(大多数auth库完全错过了,但我坚持正确处理它):如何智能地处理大规模,分布式,可变用户名的暴力攻击.
我知道所有常用的技巧:
现在,这些只是理论上可行的想法.有很多垃圾想法可以打开网站(比如琐碎的DoS攻击).我想要的是更好的东西.更好的是,我的意思是:
它必须安全(+)抵御DoS和暴力攻击,并且不会引入任何新的漏洞,这些漏洞可能会让稍微狡猾的机器人继续在雷达下运行
它必须是自动化的.如果需要人工操作员验证每次登录或监控可疑活动,那么它无法在真实场景中运行
它必须适用于主流网络使用(即可由非程序员执行的高流失率,高流量和开放式注册)
它不会妨碍用户体验到临时用户会感到烦恼或沮丧(并可能放弃网站)
它不能涉及小猫,除非它们真的是非常安全的小猫
(+)'安全',我的意思是至少和偏执的用户保密密码一样安全
所以 - 让我们听听吧!你会怎么做?你知道我没有提到过的最佳实践(哦,请你说)吗?我承认我对自己有所了解(结合3和4的想法),但我会让真正的专家在让自己尴尬之前说话;-)
我正试图找出一种防止机器人提交表单的好方法,同时保持流程简单.我已经阅读了几个很棒的想法,但我想在提交表单时添加一个确认选项.用户单击"提交"并弹出一个需要用户交互的Javascript确认提示.
这会阻止机器人或者机器人能够解决这个问题吗?下面是代码和JSFIddle来演示我的想法:
$('button').click(function () {
if(Confirm()) {
alert('Form submitted');
/* perform a $.post() to php */
}
else {
alert('Form not submitted');
}
});
function Confirm() {
var _question = confirm('Are you sure about this?');
var _response = (_question) ? true : false;
return _response;
}
Run Code Online (Sandbox Code Playgroud) 要求用户阅读扭曲文本的CAPTCHA对于有视力的人来说是好的,但对于那些失明或有其他残疾的人来说是一个可怕的障碍.音频备选方案偶尔可用,但仍然无法帮助那些聋哑人和盲人,并且很难使用屏幕阅读器(已经在向您朗读文字).
存在一对夫妇使用人类解决代表用户,如的CAPTCHA解决方案的WebVisium和Solona,但这些依靠志愿者运营商的可用性(例如,Solona显然只有一个志愿,所以你必须希望他当你需要帮助时醒着).
在我看来,盲人所需的CAPTCHA解决方案的数量非常低 - 我猜想在像英国这样的人口稠密的国家每天不到几百个.这意味着,与想要在短时间内多次执行动作的坏人不同,为盲人提供的CAPTCHA援助服务可以承担相当大的计算资源 - 例如,亚马逊EC2中的计算机云- 来识别所呈现的文本.
我的问题是:假设你不太关心速度,并且你有很多可用的计算机,是否有算法可以让你解决今天常见的文本失真CAPTCHA,比如reCaptcha使用的那些?或者即使有大量的资源和时间,这些问题是否真的难以解决?
几点说明:
在这一点上,我的问题只是理论上的,但显然任何此类服务都必须谨慎控制访问以防止垃圾邮件发送者.也许只有注册的盲人才会被允许使用它.
我知道几年前使用一台算法在一台计算机上运行几秒钟就破坏了旧的Yahoo CAPTCHA.我在问现代CAPTCHA是否可以打破,可能更慢,资源更多.
我正在寻找一些示例项目来阅读CAPTCHA图像.在C#或VB中有没有?
伪代码:
String captchaText = CaptchaDecoder(Image captchaImage);
Run Code Online (Sandbox Code Playgroud) 只是为了提出我的问题的背景,我正在使用Vanilla Forums来运行我的网站.Vanilla论坛提供了使用reCAPTCHA验证网站上新注册的内置支持,我已经启用了该注册.然而,最近在我的论坛上,我看到了垃圾邮件注册的飙升(明显的"垃圾邮件"用户名,使用的电子邮件地址相同,等等)
我调查了这个,试着看看垃圾邮件如何通过reCAPTCHA验证.我知道在reCAPTCHA中,其中一个单词是系统已知的,另一个单词不是,因此即使输入了一个不正确的单词,表单提交也可能会验证.
所以我通过输入无效的reCAPTCHA输入在我的网站上的注册表上尝试了一些东西.我找到...
...没有引发reCAPTCHA错误.
我不认为这个问题与香草论坛有关.当您进入reCAPTCHA的演示页面时,请自行尝试.输入两个单词,正确的字符数,但单词本身关闭一个字符 - 具有"相似"的字符(例如,'a'而不是'd','v'而不是'w'.)
Vanilla实施reCAPTCHA是否有问题,或者这是reCAPTCHA本身的已知问题?(你可以在这里测试Vanilla的注册表.)