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.
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.
Hepinize mutlu ve botsuz bloglamalar :)
YORUMLAR (2)
[HttpPost]
public ActionResult Index(string buraya ne yazıcaz)
Yukarıda
if (ModelState.IsValid)
ile başlayan kısımda
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.