ASP.NET MVC 3'te Recaptcha Kullanımı

Siteme son günlerde botların rahatsız edici mesajlar yazmasından sonra botlara karşı güvenlik önlemi almaya karar verdim. Bunun için kullanılabilecek en güzel yöntemlerden birisi CAPTCHA (Completely Automated Public Turing Test To Tell Computers and Humans Apart) sistemidir. Bu sistem sitenizdeki formları dolduran kişilerin insan mı yoksa bilgisayar (otomatik mesaj yazan botlar) mı olduğuna karar verir. Bunu bir resim üzerine işlenmiş yazıların aynen yazılmasını isteyerek yapar. Eğer ziyaretçi resimde gördüğü kelimeleri doğru yazabiliyorsa insan olduğu kanısına varılır.

MVC'de captcha sisteminin kullanımı webformsdan daha kolay diyebiliriz. Bu sistemi kullanabilmemiz için Microsoft Web Helpers kütüphanesini kullanabiliriz. Yüklemek için Visual Studio'da Tools > Library Package Manager > Package Manager Console da "Install-Package microsoft-web-helpers" komutunu verip enter tuşuna basalım. Kütüphanenin başarıyla projemize eklendiği bilgisini gördükten sonra google.com/recaptcha adresine gidiyoruz. Use recaptcha on your site butonuna tıklıyoruz. Açılan pencereden sign up now! butonuna tıklıyoruz. Google hesabımıza giriş yaptıktan sonra yönlendirildiğimiz sayfada domain adımızı giriyoruz. Açılan sayfada public ve private key olmak üzere iki değer yer alıyor.

Recaptcha public ve private key

Sıra geldi projemizde recapcha'yı kullanmaya. View'da kontrolü kullanacağımız form içerisinde

@ReCaptcha.GetHtml(publicKey: "public_key_buraya_girilecek", theme: "white", language: "tr")

diyerek sayfaya kontrolü ekliyoruz. theme ve language değerlerini özelleştirebilirsiniz. Language="tr" diyerek Türkçe arayüzü kullanabilirsiniz. Controllerda ise formdan gelen veriyi kontrol ediyoruz.

if (ModelState.IsValid)
{
    if (ReCaptcha.Validate(privateKey: "private_key_buraya_girilecek"))
    {
        //captcha verisi doğruysa yapılacaklar
    }
    else
    {
        //captcha doğrulanamadı ise yapılacaklar
    }
}

Projemizi çalıştırdığımızda recaptchanın ekran görüntüsü şu şekildedir.

recaptcha ekran görüntüsü

Hepinize mutlu ve botsuz bloglamalar :)

Mehmet YAYLACI
YORUMLAR (2)
  1. Engin
    Engin - Cevapla

    01 Temmuz 2012 - 17:32

    Peki bunu post ettiğimiz controllar'a nasıl göndericez? [HttpPost] public ActionResult Index(string buraya ne yazıcaz)

    • Mehmet YAYLACI
      Mehmet YAYLACI - Cevapla

      01 Temmuz 2012 - 18:08

      Yukarıda

      if (ModelState.IsValid)
      ile başlayan kısımda
      if (ReCaptcha.Validate(privateKey: "private_key_buraya_girilecek"))
      bool değer alıyor. Resimde görülen karakterler doğru olarak girilmişse yapılacaklar ve else de ise yanlışsa yapılacaklar.

YORUM FORMU