




Captcha Doğrulaması İçin Client Tarafında Microoptimizasyon Düşüncem
-
Captcha doğrulamasını illa kullanıcının girdiği veri sunucuya yollandıktan sonra mı kontrol etmek lazım?
Şu şekilde bir mantık düşündüm.
Amacım:
1-)Yanlış Captcha girişinde sayfa yenilenmesini, form verilerinin yeniden doldurulmasını engellemek.
2-)Yanlış kod girişleri sonucunda, sunucuda tekrar captcha doğrulamasını ve captcha oluşturulmasını engellemek. Çok az da olsa performans katkısında bulunmak.
Yöntemim.
İstemciye CAPTCHA resmi gönderilir. Ayrıca doğru sonucun SHA256 ile özetlenmiş hali istemciye yollanır.Son kullanıcı form verilerini doldurur ve captcha doğrulama kodunu girip form'u submit eder.
Javascript ile form gönderilmeden önce doğrulama koduna girilen değer SHA256 ile özetlenir ve sunucudan gelen SHA256 özeti ile karşılaştırılır.
Eğer özetler eşit ise sunucuya veriler yollanır.
Eşit değilse submit işi iptal edilir ve sayfa yenilenmeden, kullanıcıya doğrulama kodunu doğru girmesi için uyarıda bulunulur.
Bu yöntemi düşündüm. Muhtemelen bir güvenlik açığına sebep vermez. Sizinde fikirinizi alayım dedim. Böyle bir yöntem uygulanıyor mu onuda bilmiyorum açıkçası.
NOT: Sunucuda sessionda ya da DB'de, captcha'nın sonucunu zaten tutacağım ve sunucuda kontrol edeceğim.
Amacım yanlış captcha yazımlarında sunucuda yeniden captcha oluşturmayı engellemek ve form verilerinin sunucuya tekrar gidip gelmesini engellemek.
-
DrKill bunu yazdı
Captcha doğrulamasını illa kullanıcının girdiği veri sunucuya yollandıktan sonra mı kontrol etmek lazım?
Şu şekilde bir mantık düşündüm.
Amacım:
1-)Yanlış Captcha girişinde sayfa yenilenmesini, form verilerinin yeniden doldurulmasını engellemek.
2-)Yanlış kod girişleri sonucunda, sunucuda tekrar captcha doğrulamasını ve captcha oluşturulmasını engellemek. Çok az da olsa performans katkısında bulunmak.
Yöntemim.
İstemciye CAPTCHA resmi gönderilir. Ayrıca doğru sonucun SHA256 ile özetlenmiş hali istemciye yollanır.Son kullanıcı form verilerini doğrular ve captcha doğrulama kodunu girip form'u submit eder.
Javascript ile form gönderilmeden önce doğrulama koduna girilen değer SHA256 ile özetlenir ve sunucudan gelen SHA256 özeti ile karşılaştırılır.
Eğer özetler eşit ise sunucuya veriler yollanır.
Eşit değilse submit işi iptal edilir ve kullanıcıya doğrulama kodunu doğru girmesi için uyarıda bulunulur.
Bu yöntemi düşündüm. Muhtemelen bir güvenlik açığına sebep vermez. Sizinde fikirinizi alayım dedim. Böyle bir yöntem uygulanıyor mu onuda bilmiyorum açıkçası.
Hocam sunucu tarafında tutmaz isen adam her seferinde doğru bir kod ile onun sha256'sını sürekli gönderirse bunu nasıl engelleyeceksin?
Yani her seferinde aynı güvenlik kodunu aynı sha256 ile yollarsa?
-
"Eğer özetler eşit ise sunucuya veriler yollanır."
eşit değilse ama ben yinede yollarsam ?
-
beyler kimse anlamamış sanırım.
kontrolü gene sunucu tarafında yapacağım zaten. Yani sesion ya da DB de son oluşturulan captchanın değerini tutup. Gönderilen captcha sonucu ile aynı olup olmadığını sunucuda kontrol edeceğim zaten.
Sadece yanlış kod girişlerinde, girilen verileri daha sunucuya göndermeden client tarafında göstermek ve yeniden captcha kodunu oluşturmayı engellemek amacım.
DrKill tarafından 01/May/15 15:27 tarihinde düzenlenmiştir -
SHA256 hashini istemciye gönderirsen adam çok basit bi script ile aynı hashi sana geri gönderir hocam.
-
smok3 bunu yazdı
SHA256 hashini istemciye gönderirsen adam çok basit bi script ile aynı hashi sana geri gönderir hocam.
Sunucuda son oluşturulan captcha'nın değeri ile client tarafından yollanan captcha'nın değerini zaten karşılaştıracağım ki?
-
smok3 bunu yazdı
SHA256 hashini istemciye gönderirsen adam çok basit bi script ile aynı hashi sana geri gönderir hocam.
tam olarak o değil dediği.
şöyle düşün. captcha nın md5 ini de göndericek istemciye. istemci tarafında md5 kırılıp captchayı çıkaramaz içinden.ama submite bastığında girilen inputu md5 leyip gelen md5 le karşılaştırıp tutmuyosa göndermez. gönderdikten sonra zaten sunucu tarafında da kontrol edicek. şey gibi güşün login formuna mailini giriyosun mail dogru formatta girilmişse yeşil yanıyo buda aynı. yeşil yanması login olduğun anlamına gelmiyo ama henüz bi hata yok
güzel fikir. tuttum
-
nurulmac11 bunu yazdısmok3 bunu yazdı
SHA256 hashini istemciye gönderirsen adam çok basit bi script ile aynı hashi sana geri gönderir hocam.
tam olarak o değil dediği.
şöyle düşün. captcha nın md5 ini de göndericek istemciye. istemci tarafında md5 kırılıp captchayı çıkaramaz içinden.ama submite bastığında girilen inputu md5 leyip gelen md5 le karşılaştırıp tutmuyosa göndermez. gönderdikten sonra zaten sunucu tarafında da kontrol edicek. şey gibi güşün login formuna mailini giriyosun mail dogru formatta girilmişse yeşil yanıyo buda aynı. yeşil yanması login olduğun anlamına gelmiyo ama henüz bi hata yok
güzel fikir. tuttum
Heh hocam sen anlamışsın ne demek istediğimi. Yani normal session kontol işlemine bir client tarafında doğrulama ekliyorum. Captcha'nın sonucunu belli etmeden.
-
Hocam böyle bir durumda da adam brute force işini localde deneyeceği için eğer captcha'nı atlatacaksa daha kolay atlatır. Tamam sunucuya yük binmez ama yanlış girilen captcha için doğrusunu bulana kadar tekrar tekrar deneme şansı veriyorsun. Normalde aynı captcha iki kere gösterilmez işin raconu budur :D
Bu arada form'un tekrar doldurulmasını istemiyorsan, request'i ajax şeklinde yapıp halledebilirsin de.
-
NmC bunu yazdı
Hocam böyle bir durumda da adam brute force işini localde deneyeceği için eğer captcha'nı atlatacaksa daha kolay atlatır. Tamam sunucuya yük binmez ama yanlış girilen captcha için doğrusunu bulana kadar tekrar tekrar deneme şansı veriyorsun. Normalde aynı captcha iki kere gösterilmez işin raconu budur :D
Bu arada form'un tekrar doldurulmasını istemiyorsan, request'i ajax şeklinde yapıp halledebilirsin de.
Hocam brute force işide zor. SHA256 dan bahsediyorum ki bunu tek sefer için düşünürsek. 2 üzeri 256 bir eder.
SHA256dan işlemi 2 kere geçirirsen zaten bu olasılık katlanıyor.
(1,1579208923731619542357098500869*10 ÜZERİ 77 ) ÇARPI (1,1579208923731619542357098500869*10 ÜZERİ 77 ) eder ki. İmkansıza yakın bir bulunma olasılı ortaya çıkıyor.
Yaklaşık 10 ÜZERİ 144 de bir olasılık çıkıyor. Bunu yakalayacak adamın süper computer'ı olması lazım ki kıçı kıytırık form hackleme işlemi ile uğraşabilsin. Zaten süper computer'ıda olsa düzgün bir içeriği kırması YıLLAR alır. MD5 den bahsetmiyoruz burada.
Aşağıda bununla ilgili bir makale var.
-
DrKill bunu yazdıNmC bunu yazdı
Hocam böyle bir durumda da adam brute force işini localde deneyeceği için eğer captcha'nı atlatacaksa daha kolay atlatır. Tamam sunucuya yük binmez ama yanlış girilen captcha için doğrusunu bulana kadar tekrar tekrar deneme şansı veriyorsun. Normalde aynı captcha iki kere gösterilmez işin raconu budur :D
Bu arada form'un tekrar doldurulmasını istemiyorsan, request'i ajax şeklinde yapıp halledebilirsin de.
Hocam brute force işide zor. SHA256 dan bahsediyorum ki bunu tek sefer için düşünürsek. 2 üzeri 256 bir eder.
SHA256dan işlemi 2 kere geçirirsen zaten bu olasılık katlanıyor.
(1,1579208923731619542357098500869*10 ÜZERİ 77 ) ÇARPI (1,1579208923731619542357098500869*10 ÜZERİ 77 ) eder ki. İmkansıza yakın bir bulunma olasılı ortaya çıkıyor.
Yaklaşık 10 ÜZERİ 144 de bir olasılık çıkıyor. Bunu yakalayacak adamın süper computer'ı olması lazım ki kıçı kıytırık form hackleme işlemi ile uğraşabilsin. Zaten süper computer'ıda olsa düzgün bir içeriği kırması YıLLAR alır. MD5 den bahsetmiyoruz burada.
Aşağıda bununla ilgili bir makale var.
Yok hocam kastettiğim şey o değil. Adamın yazdığı bot bir oranda captcha okuyodur (genelde %70-%80 oranında çalışıyor captcha readerlar.) Bir kere denedikten sonra yeni kod gelmesi bu oranı koruyor. Fakat senin durumda adamın en yüksek ihtimal tutacak n kombinasyonunu üst üste deneme şansı ortaya çıkıyor.