Posted in

ASP.NET Core ile Google reCAPTCHA Entegrasyonu

Bu blog yazısında, ASP.NET Core projenize Google reCAPTCHA entegrasyonunu nasıl ekleyeceğinizi adım adım anlatacağım. reCAPTCHA, web sitenizi botlardan korumak için kullanılan popüler bir araçtır.

1. Google reCAPTCHA Anahtarlarını Oluşturma

Öncelikle, Google reCAPTCHA sitesine giderek bir hesap oluşturun ve sitenizi kaydedin. Google size bir Site Key ve Secret Key sağlayacaktır. Bu anahtarlar reCAPTCHA’yı sitenize entegre etmenizi sağlayacaktır.

2. Projenize reCAPTCHA Script’ini Ekleyin

HTML sayfanızın <head> kısmına aşağıdaki script etiketini ekleyin. Bu, reCAPTCHA’nın JavaScript API’sini yükleyecektir.

 <script src="https://www.google.com/recaptcha/api.js" async defer></script>

3. reCAPTCHA Widget’ını Sayfanıza Ekleyin

reCAPTCHA’nın görüneceği yere aşağıdaki kodu ekleyin. data-sitekey attribute’üne Google’ın sağladığı Site Key değerini girin.

<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY" data-callback="submit"></div>

4. reCAPTCHA Doğrulama Metodu Oluşturma

ASP.NET Core projenizde, reCAPTCHA doğrulamasını gerçekleştirmek için bir metot oluşturun. Bu metot, Google’ın reCAPTCHA doğrulama API’sine bir HTTP POST isteği gönderir ve cevabı kontrol eder.

private async Task<bool> CheckCaptcha()
{
    var postData = new List<KeyValuePair<string, string>>()
    {
        new KeyValuePair<string, string>("secret", "YOUR_SECRET_KEY"),
        new KeyValuePair<string, string>("remoteip", HttpContext.Connection.RemoteIpAddress.ToString()),
        new KeyValuePair<string, string>("response", HttpContext.Request.Form["g-recaptcha-response"])
    };

    var client = new HttpClient();
    var response = await client.PostAsync("https://www.google.com/recaptcha/api/siteverify", new FormUrlEncodedContent(postData));
    var responseString = await response.Content.ReadAsStringAsync();
    var responseObject = JsonConvert.DeserializeObject<JObject>(responseString);

    return (bool)responseObject["success"];
}

5. HomeController’da reCAPTCHA Doğrulama

Artık HomeController’da reCAPTCHA doğrulamasını kullanabiliriz. Form gönderiminde reCAPTCHA yanıtını alıp doğrulama metodunu çağıracağız.

public async Task<IActionResult> SubmitForm()
{
    var captchaImage = HttpContext.Request.Form["g-recaptcha-response"];
    if (string.IsNullOrEmpty(captchaImage))
    {
        TempData["HataMesaji"] = "Lütfen reCAPTCHA doğrulamasını tamamlayın.";
        return View();
    }

    var verified = await CheckCaptcha();
    if (verified)
    {
        // reCAPTCHA doğrulaması başarılı
        // Form işlemlerini burada gerçekleştirin
    }
    else
    {
        TempData["HataMesaji"] = "reCAPTCHA doğrulaması başarısız. Lütfen tekrar deneyin.";
        return View();
    }

    return RedirectToAction("Success");
}

6. Form Gönderiminde reCAPTCHA Doğrulama

Formunuzu gönderdiğinizde reCAPTCHA doğrulaması yapılacak ve sonuca göre işlemler gerçekleştirecektir. reCAPTCHA doğrulaması başarısızsa kullanıcıya hata mesajı gösterilir, başarılıysa form işleme alınır.

Bu adımları izleyerek, ASP.NET Core projenize Google reCAPTCHA entegrasyonunu ekleyebilir ve web sitenizi botlardan koruyabilirsiniz. Bu süreçte dikkat etmeniz gereken en önemli nokta, Site Key ve Secret Key değerlerinizi güvende tutmaktır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir