ASP.NET: Google yeni reCaptchA kullanımı (Server-SIDE)

 Google API reCAPTCHA ASP.NET uygulamasırecaptche

  1. Google reCAPTCHA sayfasına gidin. Sayfanın üzerindeki linklere göz atarak reCapthe ile ilgili daha fazla bilgi edinebilirsiniz ancak şimdi sayfanın en üstünde yer alan “Get reCaptcha ” butonuna tıklıyoruz. Bu işlemi tamamlamak için login olmanız yada yeni bir hesap oluşturmanız gerekebilir.
  2. Burada sayfanızın api’sini ayarlamanız gerekiyor. Kodları kullanabilmek için Secret Key ve Site Key anahtarlarına ihtiyacımız var.
  3. Sonraki ekranda HTML tarafında yapılacaklar sırayla sunulmaktadır. Aslında kullanıcı onay checkbox’ının ve reCaptcha sorusunun formda görünmesini istediğiniz yere javascript dosyası için bir script ifadesi ve div ekleyebilirsiniz. Dikkat edilmesi gereken yer div bir Secret Key  referansı alır, bu referansı doğru girdiğinizden emin olmalısınız. Devam edelim ilgili kodları yerleştireceğimiz bir aspx dosyası açalım.

Bu noktada form hazırdır. Kullanıcı checkbox’a tıklar ve formu gönderir. Bunun yanından reCaptcha’nin çalışıp çalışmadığını kontrol etmek için geri dönüş almak zorundayız. Bu gerçekleştirmek için yukarıda eklenen kod  form postback olduğunda “g-recaptcha-response” adlandırılan farklı bir değişken ekler. Form gönderiminde olayları yakalayan backend koduna gidilecek, yukarıdaki değişken kontrol edilecek, daha sonra Google web api adresi üzerindeki bu değişkenin içeriği gönderilecektir. Tüm bunların nasıl gerçekleştiğini gösteren kod aşağıdadır :


if (Request["g-recaptcha-response"] != null && Request["g-recaptcha-response"] != "")
{
// google web api 3 parametre alır:
// 1) Websitenize ait Secret key
// 2) Form post edildiğinde geri dönecek değer
// 3) Kullanıc IP adresi
//

string sCatchaResponse = Request["g-recaptcha-response"];
string sSecret = "secret key buraya";
string sIPAddress = Request.ServerVariables["REMOTE_ADDR"].ToString();

// WebClient örneği oluşturup web apiyi ve sonucu cağırıyoruz

System.Net.WebClient wc = new System.Net.WebClient();
string sRequest = String.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}&remoteip={2}&lang={3}", sSecret, sCatchaResponse, sIPAddress,"tr");

string sResponse = wc.DownloadString(sRequest);

// Sonuc geriye JSON object olarak döner. Bilgileri tutmak için basit GoogleResponse nesnesi yarattım
// ve response'yi JavaScriptSerializer kullanarak deserialize ediyorum

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
GoogleResponse response = serializer.Deserialize<GoogleResponse>(sResponse);
// Şimdide çağırma işleminin başarılı yoksa başarısızmı olduğuna göre değer döndürüyorum
if (!response.success)
{
// sonuç başarısız ise false döndürdüm...
//
return false;
}
else
return true;
}
else
{

// Buraya geldiysenin bot formda kontrol yapmamış demektir
// Kullanıcıyı bunu yapması için uyarın
return false;
}

Yukarıdaki kodlar aşağıda tanımladığım GoogleResponse nesne sınıfından referans alıyor.


private class GoogleResponse
{
public bool success;
public string errorcodes;
}

Muavenet

Web teknolojilerine merak salmış bir bilgisayar mühendisinin yazıları

ASP.NET: Google yeni reCaptchA kullanımı (Server-SIDE)” hakkında 1 yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir