如果第一个单词是正确的,则reCaptcha有效

时间:2013-07-23 20:31:01

标签: asp.net-mvc recaptcha

我正在我的MVC项目中实现reCaptcha,如下所示。

    [HttpPost]
    [ValidateAntiForgeryToken]
    [RecaptchaControlMvc.CaptchaValidatorAttribute]
    public ActionResult Index(IndexTemp indextemp, bool captchaValid)
    {
        if (!captchaValid)
        {
            ModelState.AddModelError("", "You did not type the verification word correctly. Please try again.");
        }

        if (ModelState.IsValid)
        {
            // do stuff here
        }
    }

在Web.config中我有以下内容。

<add key="ReCaptchaPrivateKey" value="some_key"/>
<add key="ReCaptchaPublicKey" value="another_key"/>

我从here得到了reCaptcha。

我注意到reCaptcha并不总是按预期工作(即有时它会在输入的单词无效时验证)。经过一些测试后,我注意到只要你正确输入第一个单词,它就会一直有效!

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这个答案很有帮助:reCAPTCHA authenticates as valid even for two incorrect words

来自reCaptcha wiki:

  

reCAPTCHA由两个词组成:一个验证字,reCAPTCHA服务器知道答案,一个字来自旧书。读取的单词没有评分(因为服务器正在使用人类猜测来找出答案)。 因此,此单词输入不正确,并且验证码仍然有效。每个读取的单词都会发送给多个人,因此不正确的解决方案不会影响reCAPTCHA的输出。

     

在验证字上,reCAPTCHA故意允许“一个一个”错误,具体取决于我们信任用户提供解决方案的程度。这可以在不影响安全性的情况下增加用户体验reCAPTCHA工程师监控此功能是否滥用。