2013-07-23 55 views
0

我在我的MVC項目中實現了reCaptcha,如下所示。如果第一個單詞正確,則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

「測試」有多少?我的猜測是你的樣本數據太小。另外,請記住功能的意圖是區分人與機器人。它不需要100%的準確性來破譯文本就能有效地做到這一點。 –

+0

詢問有關第三方應用程序/插件的問題,應向第三方提出問題。請參閱https://code.google.com/p/recaptcha/issues/list –

+0

對於2016年的讀者來說,這仍然是一個問題。即使一個單詞正確,Recaptcha也會驗證。 – itoctopus

回答

2

這個答案是有幫助的:reCAPTCHA authenticates as valid even for two incorrect words

從reCAPTCHA的維基:

驗證碼是由兩個單詞:一個驗證一句話,該驗證碼服務器知道答案和字來自一本舊書。讀取的單詞不分級(因爲服務器正在使用人爲猜測來找出答案)。 因此,這個詞可以輸入不正確,並且驗證碼仍然有效。每個讀取字都發送給多個人,因此不正確的解決方案不會影響reCAPTCHA的輸出。

在驗證字上,reCAPTCHA有意允許出現「一個一個」的錯誤,這取決於我們相信用戶給出的解決方案的多少。這增加了用戶體驗而不影響安全性。 reCAPTCHA工程師會監控此功能的濫用情況。

相關問題