2012-01-07 25 views
0

は、私は私がはcaptchaを使用する必要がありますか?

<%: CaptchaMVC.HtmlHelpers.CaptchaHelper.Captcha(Html,"Refresh","Input Symbols",5) %> 
capcha私を与えている、次のように私は、そのコードを追加したregister.aspxページでのCodePlexから得たが、 ているDLLを追加し、 は、私はそれが好きでしたキャプチャを使用する必要があるMVC Webアプリケーションを持っています

と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(); 
     } 

しかし、そのデバッグモードのように正常に動作していないで、これらの方法 なぜいずれかをヒットすることはできませんあまりにも登録ボタンをクリックした後?それは遅すぎる私はCAPTCHAの代替を提案するかもしれないなら、なぜ

答えて

1

は、ここにある:あなたが販売されている場合

は、ここで私はハニーポットと呼ばれる使用する単純な手法である

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

あなたは、あなたのコントローラでは、

012、今、あなたは、フォームの隠しフィールドを持っているあなたのビューに

@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

+0

通常のユーザーはどのように非表示フィールドを埋めることができると思いますか? FireBugで? – gdoron

+0

@gdoron今日私は明らかに話をしていません。 –

0

私は同様のソリューションを探していたとASP.NET MVCのためのハニーポットが今そこにあります。あなたはここでそれを見つけることができます:

http://nuget.org/packages/SimpleHoneypot.MVC

1

をあなたはわずか数行のコードを使用してMVC .NETプロジェクトのための堅牢でセキュアなキャプチャソリューションを使用する.NET用のreCAPTCHA(http://recaptchanet.codeplex.com)を使用することができます。

-1

私は、MVCRecaptchahttps://mvcrecaptcha.codeplex.com/)の使用をお勧めします。注意してください - 具体的にはMVCRecaptchaであり、その他の密接に関連する実装ではありません。

パッケージをNugetからダウンロードしてください。ただし、利用可能な他のRecaptchaパッケージをダウンロードしないように注意してください。具体的にはMVC recaptchaをダウンロードする必要があります。

次に、MVC recaptcha codeplexサイトの残りの手順に従って、起動して実行してください。

+0

なぜ具体的にMVCRecaptcha?アドバンテージは何ですか? –

0

OK、そうSO私は私の完全な回答を投稿することができないので、私はそれをここに投稿します...

はまず、私はそれが非常に簡単であるとして、ハニーポットのアプローチが有効であることを確信しませんどんなフィールドが隠されているかをボットが識別できるようにするために、gdoronが正しく指摘しています。

第2に、ReCAPTCHAは、今日利用可能な最も普及していないCaptcha実装の1つです。フリーでオープンソースで、すべてではなく、ほとんどのボットに対して比較的効果的です(CAPTCHAは侵入不可能です)。私はいくつかの他の.Net recaptcha実装を使用していました。MVCRecaptchaは実際に私が成功した唯一のものでした。おそらく私が使用していたDotNetバージョンとは何か?簡単に言えば、それは私のために働き、他の人はそうしなかった。

関連する問題