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