ASP.NET İle reCAPTCHA Kullanımı

Eğer bu makaleyi okumaya niyetliyseniz, birazdan güzel bir güvenlik önlemi olan CAPTCHA'yi (Completely Automated Public Turing Test To Tell Computers and Humans Apart, yani sizin insan mı yoksa bilgisayar mı olduğunuza karar veren mekanizmayı) ASP.NET ile kullanmayı öğreneceksiniz. Peki nedir bu CAPTCHA? CAPTCHA, bir resim üzerine işlenmiş metinin insan tarafından okunabilmesi için kolay ancak bilgisayar (bot diyelim) tarafından okunulabilmesi için zor sözcük üreten programdır. En az bir kere görmüşsünüzdür bu uygulamayı. Siteye üye olurken ya da yorum gönderirken sizden insan olup olmadığınızı anlayabilmeleri için soru sorarlar. Siz de cevap verirsiniz. Cevap doğruysa insansınızdır, yanlış ise bot muamelesi görürsünüz. İşte o yapı CAPTCHA'dir. Bu CAPTCHA'nin doğru resmi tıklatma, üzerinde rakamlar bulunan kutuları sıraya dizdirme gibi farklı varyasyonları da mevcut. Peki niye böyle bir şey yapıyorlar? Sebebi ise yorum eklenen bir sayfa düşünün, buraya botların girip 100'lerce gereksiz yorum yazdığını göz önüne alırsak hem görüntü hem de gereksiz veri açısından çok can sıkıcı bir durum olacaktır. Evet öyleyse başlayalım.
Senaryo : Bir adet textbox, bir adet button ve reCAPTCHA uygulaması ile post işlemi gerçekleştirmeye çalışacağız.
Bilinmesi Gerekenler :
  • Makaledeki örnek .NET Framework 3.5 ve Visual Studio 2010 ile hazırlandı,
  • reCAPTCHA uygulaması Google tarafından sunulan ücretsiz bir servis ancak Google hesabınız olması lazım.
İlk olarak reCAPTCHA uygulamasını indirmemiz için bir kaç basit adım gerekiyor.
İlk adımımız reCAPTCHA'nin sitesine girip "USE reCAPTCHA ON YOUR SITE" yazısı bulunan butona tıklıyoruz.
Use reCAPTCHA On Your Site
Daha sonra ise "Sign Up Now!" yazısı bulunan butona basıp Google hesabımız ile giriş yapıyoruz.
Sign Up Now
Google hesabımız ile giriş yaptıktan sonra karşımıza şöyle bir ekran çıkacak.
Create reCAPTCHA key
Burada domain yazan kısma internet sitenizin ismini yazarak "Create Key" butonuna bastığınızda sitenize özel iki adet key üretecektir. Bunlar private key ve public key'dir. Ekran görüntüsünde bulunan "Enable this key on all domains (global key)" opsiyonunu en sonunda anlatacağım.
Daha sonraki adımda domain ismine göre üretilecek şifreler aşağıdaki ekran görüntüsündeki gibi görünecektir.
reCAPTCHA Keys
Tüm işlemleri geçtik. Artık gerekli olan dökümanları indirip projemize dahil edeceğiz. Yukarıdaki ekran görüntüsünde bulunan "reCAPTCHA plugins and libraries" yazısına tıklayıp gerekli olan yerden de indirebilirsiniz ancak adım sayımızı biraz artıracağı için size direkt indirmeniz için indirme linkini veriyorum. (TIKLAYIN)
İndirdiğiniz sıkıştırılmış dosyayı açtığınızda karşınızda bir DLL dosyası göreceksiniz. Bu DLL dosyasını projenizde kullanabilmek için projenize sağ tıklayarak "Add Reference" demeniz gerekiyor.
reCAPTCHA DLL
Şimdi kod yazma işlemimiz başlıyor. Sayfanızın source kısmında üst tarafa aşağıdaki satırı ekleyin.
<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>
Burada reCAPTCHA kontrolünün sayfamızda kullanılacağını söylemiş oluyoruz. Daha sonra ise ;
<recaptcha:RecaptchaControl ID="recaptcha" runat="server" PublicKey="SİZE VERİLEN PUBLIC KEY’İ GİRİN" PrivateKey="SİZE VERİLEN PRIVATE KEY’İ GİRİN" />
satırını form tag'leri arasına eklediğinizde sayfamızın source tarafı ile işimiz bitiyor.
Şimdi kod yazma kısmına gelirsek yapacağımız işlem sayfamızdaki butona tıklandığında reCAPTCHA tarafından üretilen iki kelimenin doğru bir şekilde yazılıp yazılmadığını kontrol etmek ve çıkacak sonuca göre işlem yaptıracağız. Hepsi bu. Bu kodu da ekleyelim. 
1
2
3
4
5
6
7
8
9
10
11
12
13
protected void btn_Gonder_Click(object sender, EventArgs e)
    {
        // Sayfanın geçerli olup olmadığını kontrol ediyoruz.     
        if (Page.IsValid)
        {
            lbl_Sonuc.Text = "Doğru girdiniz!";
            lbl_Sonuc.ForeColor = Color.Green;
            return;
        }
        lbl_Sonuc.Text = "Yanlış girdiniz!";
        lbl_Sonuc.ForeColor = Color.Red;
    }
Gelelim  "Enable this key on all domains (global key)" olayına. Bu checkbox seçili ise size üretilecek olan private ve public key'ler tüm çapraz domainlerinizde geçerli olacak. Ancak seçili olmazsa, tek bir domain ve onun alt domain'lerinde geçerli olacak. Birden fazla site için key almak istiyorsanız reCAPTCHA'nin sitesinde sol taraftaki menüde bulunan "My Account" kısmına girerek birden fazla site için key alabilirsiniz. Bu arada reCAPTCHA ile ilgili söylemek istediğim son 2 şey var. Birincisi kontrolünüze uygulayabileceğiniz toplam 4 farklı tema bulunuyor. Bunları görmek için form tag'leri arasına yazdığınız recaptcha satırında Theme özelliğini kontrol edin. İkincisi, reCAPTCHA kontrolünüzde bulunan butonların üzerine gelindiğinde Türkçe açıklamalar bulunmasını istiyorsanız Language="tr" özelliğini ekleyin. Projemizde bulunan reCAPTCHA örneğinin en son ekran görüntüsü böyle olacaktır :
reCAPTCHA Demo Görüntüsü
Uygulamalı halini görmek için buraya tıklayın.
reCAPTCHA hakkında daha fazla bilgi almak için buraya tıklayın.

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Mernisten veri Çekme