我正在我的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并不总是按预期工作(即有时它会在输入的单词无效时验证)。经过一些测试后,我注意到只要你正确输入第一个单词,它就会一直有效!
有什么想法吗?
答案 0 :(得分:2)
这个答案很有帮助:reCAPTCHA authenticates as valid even for two incorrect words
来自reCaptcha wiki:
reCAPTCHA由两个词组成:一个验证字,reCAPTCHA服务器知道答案,一个读字来自旧书。读取的单词没有评分(因为服务器正在使用人类猜测来找出答案)。 因此,此单词输入不正确,并且验证码仍然有效。每个读取的单词都会发送给多个人,因此不正确的解决方案不会影响reCAPTCHA的输出。
在验证字上,reCAPTCHA故意允许“一个一个”错误,具体取决于我们信任用户提供解决方案的程度。这可以在不影响安全性的情况下增加用户体验reCAPTCHA工程师监控此功能是否滥用。