CAPTCHA

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart)

Nedir, Neden Kullanılır
Carnegie Mellon School of Computer Science tarafından geliştirilen bir proje olan CAPTCHA’nın amacı bilgisayar ile insanların davranışlarının ayırt etmek, istemcinin gerçekten bir insan olduğunu kanıtlamaktır. Bu ayrımı yapmanın daha fazla gerekli olduğu web uygulamalarında çok sık kullanılmaya başlanmıştır.

Sistemin çalışması kısaca şöyledir. Sunucu rastgele bir resim oluşturur, istemci tarafındaki kişiden bu resimdeki yazıyı okuyup, ilgili alana girmesi istenir. Buradaki basit mantık o resimde sadece insan tarafından okunabilecek, bir program tarafından okunması zor olan bir kelime oluşturmaktır. OCR (optik karakter okuyucu) programları, düzgün bir formda yazılmış yazıyı bir resmin içinden okuyabilirler. Bu sebeple sunucu tarafından üretilen resmin içindeki yazının bir insan tarafından okunabilecek fakat OCR programları tarafından okunamayacak derecede bozulmuş olması gerekir. İtiraf etmeliyim ki, CAPTCHA ile üretilmiş fakat benim okuyamadığım resimlerle de karşılaşıyorum. Burada uygulamalar yazıyı bozarken kantarın topuzunu mu kaçırıyor, yoksa benim zaten insan olarak algılanmamam mı gerekiyor, ondan emin olamadım.

İşin şakası bir yana, gerçekten de üretilen karekterlerin bazen okunamaması veya çok gelişmiş OCR programları tarafından bazen resimlerin okunabiliyor olması gibi zayıflıklarına rağmen, DYPM (Did You Pass Math, “3 artı sekiz kaç eder?” gibi sorular yönelterek otomatik yazılımları engelleyen.) veya resimler arasından duygusal bazı kriterlerle seçim yapılmasını isteyen v.b. gibi alternatif yöntemlerden şu an için daha kullanışlı olmaya devam etmektedir.

Nerelerde Kullanabilirsiniz?
· Online Anketler,
· Üyelik formları,
· E-Posta Servisleri,
· Site içi Arama Sayfaları,
· Arama Motorları tarafından indekslenmesini istemediğiniz sayfalarınızda,
· Veya istemcinin bir robot olmasını istemeyeceğiniz tüm uygulamalarda...

Güvenli Olmayan Uygulamalar
CAPTCHA uygulamalarında, gözden kaçırılabilen iki güvenlik sorunundan bahsetmekte fayda var.

· Resmin session ID referans alınarak üretildiği bazı CAPTCHA kontrollerinde, bilinen bir resme ait session ID’si kullanılarak, güvenlik herhangi bir OCR yazılımı kullanmadan da aşılabilir.
· Paylaşılan sunucularda, aynı sunucuyu kullanan diğer bir sanal hostun yaratacağı güvenlik açığı, CAPTCHA kullanılan siteyi de saldırılara açık hale getirebilir.

CAPTCHA resminin, istemci tarafında oluşturulduğu uygulamalarda, kullanıcı tarafında çalıştırılacak uygulamalarla resmin içine gizlenen metin, açık olarak görüntülenerek okunabilir. Bazı CAPTCHA sistemleri bunu önlemek için MD5 şifrelemesini kullanmasına rağmen bu şifrelemeler de artık sıklıkla kırılabilmektedir.

Uygulama
.NET ile uygulama geliştirenler için basit bir CAPTCHA kontrolü önerebilirim.
Jeff Atwood tarafından geliştirilen bu kontrol ile web uygulamalarınıza beş dakika içerisinde bir CAPTCHA kontrolü ekleyebilirsiniz. Hem ASP.NET 1.1, hem de ASP.NET 2.0 için kaynak kodları mevcut olan bu kontrolü ihtiyaçlarınıza özel esnekliklerle kullanmanız mümkün.

· Resim dinamik olarak üretilip, bellekten direkt olarak tarayıcıya gönderildiğinden diskte yer kaplamıyor.
· Resmin arkaplanı, fontlar ve opsiyonel olarak çizdirilen ekstra çizgilerin bozulma derecelerini, birbirinden bağımsız olarak ayarlayabiliyorsunuz.
· Resmin boyutlarını, karakter sayısını ve kullanılacak karakter setini belirleyebiliyorsunuz. (“1”, “I”, “0”, “O” gibi birbiri ile karıştırılma ihtimali olan karakterleri kullanmayabiliyorsunuz.)


Kotrolle ilgili kaynak kodları ve kurulumla ilgili bilgiyi http://www.codeproject.com/aspnet/CaptchaControl.asp adresinden edinebilirsiniz.

Kaynak: www.beyazsapka.org

Serkan AKIN
Red Bilişim