2012-01-07 39 views
0

我的MVC Web應用程序我需要使用驗證碼, 我沒有它喜歡加我從CodePlex上了,但在 頁面register.aspx我已經添加的代碼像下面這是給我CAPCHA在Mvc網絡應用程序需要使用驗證碼?

<%: CaptchaMVC.HtmlHelpers.CaptchaHelper.Captcha(Html,"Refresh","Input Symbols",5) %> 
的DLL

代碼中的AccountController.cs:

[HttpPost] 
     public ActionResult NotAttribute() 
     { 

      if (this.IsCaptchaVerify("Captcha is not valid")) 
      { 
       TempData["Message"] = "Captcha is valid"; 
       return View(); 
      } 

      TempData["Message"] = "Captcha is not valid"; 
      return View(); 
     } 


     [HttpPost] 
     [CaptchaVerify("Captcha is not valid")] 
     public ActionResult UseAttribute() 
     { 
      if (ModelState.IsValid) 
      { 
       TempData["Message"] = "Captcha is valid"; 
       return View(); 
      } 
      TempData["Message"] = "Captcha is not valid"; 
      return View(); 
     } 

但其不能正常工作在調試模式上註冊按鈕點擊它不能打任何一個這些方法 後爲什麼呢?

回答

1

如果它不太晚可能我建議CAPTCHA的替代,這是爲什麼:

http://www.codinghorror.com/blog/2008/03/captcha-is-dead-long-live-captcha.html

,如果你有賣的,這裏是一個簡單的技術,我使用稱爲蜜罐,

你可以添加到您的視圖

@Html.TextBox("NameItWhateverYouWant", null, new {style="display:none"}) 

現在你有一個隱藏字段窗體上,然後在你的控制器,

bool botAttack = Request.Params.AllKeys.Contains("NameItWhateverYouWant") 
     && !String.IsNullOrEmpty(Request.Params["NameItWhateverYouWant"]); 

基本上只有一個機器人攻擊你的註冊過程將填補這個領域。

是否我提到過這也會帶來更好的用戶體驗?

這裏是博客文章,鼓舞瞭解決方案:

http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

+0

機器人可以被編程爲忽略隱藏字段(即使它們只被css隱藏)。小心。 – gdoron 2012-01-07 17:21:43

+0

您如何看待普通用戶填寫隱藏字段?與FireBug? – gdoron 2012-01-07 17:36:37

+0

@gdoron我明顯在說話而沒有想到今天.. – 2012-01-07 17:41:09

-1

我會推薦使用MVCRecaptchahttps://mvcrecaptcha.codeplex.com/)。請注意 - 特別是MVCRecaptcha,而不是一些其他密切相關的實現。

從Nuget下載軟件包,但是,請確保您不下載其他可用的Recaptcha軟件包 - 您應該專門下載MVC recaptcha。

然後按照MVC recaptcha codeplex網站上的其他說明啓動並運行。

+0

爲什麼特別MVCRecaptcha?有什麼優勢? – 2014-01-07 15:58:32

0

好了,既然這麼不允許我發表我正式的答覆,我將它張貼在這裏...

首先,我不相信,蜜罐的方法是有效的,因爲它是很容易讓機器人識別哪些字段是隱藏的,正如gdoron正確指出的那樣。其次,ReCAPTCHA是當今最常用的驗證碼實現之一,即使不是最常用的驗證碼實現之一。免費,開放源代碼,對大多數(而不是全部)機器人都比較有效(沒有CAPTCHA是無法穿透的)。我使用了其他一些.Net recaptcha實現,MVCRecaptcha實際上是我獲得成功的唯一一個 - 也許與我使用的DotNet版本有關?簡而言之,它爲我工作,其他人沒有。

相關問題