в веб-приложении Mvc нужно использовать капчу? - PullRequest
0 голосов
/ 07 января 2012

У меня есть веб-приложение MVC, мне нужно использовать капчу, я сделал это, как добавить DLL, который я получил от codeplex, но на странице register.aspx я добавил этот код, подобный следующему, который дает мне capcha

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

и код на 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();
        }

Но если он не работает должным образом, как и в режиме отладки, после нажатия на кнопку регистрации он не может нажать ни один из этих методов. почему?

Ответы [ 4 ]

1 голос
/ 04 февраля 2013

Вы можете использовать Recaptcha для .NET (http://recaptchanet.codeplex.com)), чтобы использовать надежное и безопасное решение капчи для вашего проекта MVC .NET с помощью всего нескольких строк кода.

1 голос
/ 07 января 2012

Если еще не поздно, я могу предложить альтернативу CAPTCHA, вот почему:

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

если вы проданы, вот простая техника, которую я использую под названием Honeypot,

Вы можете добавить это в свой просмотр

@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 голосов
/ 08 января 2014

ОК, так как ТАК не позволяет мне публиковать полный ответ, я опубликую его здесь ...

Во-первых, я не верю, что подход с использованием приманки эффективен, так как боты довольно легко могут определить, какие поля скрыты, как правильно указал Гдорон.

Во-вторых, ReCAPTCHA является одной из самых, если не самой используемой реализацией капчи, доступной сегодня. Свободный, открытый исходный код, относительно эффективен против большинства, не всех, ботов (CAPTCHA отсутствует). Я использовал некоторые другие реализации .Net recaptcha, и MVCRecaptcha был фактически единственным, с чем я имел успех - возможно, что-то связанное с версией DotNet, которую я использовал? Проще говоря, у меня это сработало, а у других - нет.

0 голосов
/ 02 февраля 2012

Я искал подобное решение, и теперь есть HoneyPot для ASP.NET MVC. Вы можете найти его здесь:

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

...