Bloga dön
Mühendislik Yayımlanma: 27.08.2026 7 dakikalık okuma

CAPTCHA orada, ama hiçbir şeyi korumuyor

Görünür bir reCAPTCHA, hCaptcha veya Turnstile bileşeni, formun korunup korunmadığı hakkında pek az şey söyler. İşte tipik yanlış yapılandırmalar ve kendi formlarınızı birkaç dakikada nasıl kontrol edebileceğiniz.

Birçok web sitesi sahibi iletişim formuna CAPTCHA ekler, küçük rozetin veya onay kutusunun belirdiğini görür ve spam sorununun çözüldüğünü düşünür. Sonra gereksiz mesajlar gelmeye devam eder. Çoğu zaman CAPTCHA'nın kendisi sorunsuzdur; yalnızca bir botu durdurabilecek hiçbir şeye bağlı değildir. Bu yazı, reCAPTCHA, hCaptcha ve Cloudflare Turnstile'ın hangi tipik yollarla süse dönüştüğünü ve kendi formlarınızı nasıl kontrol edeceğinizi ele alır.

Koruma gerçekte nerede gerçekleşir?

Üç hizmet de aynı ilkeye göre çalışır. Tarayıcıdaki bir betik kontrollerini yapar ve forma bir token, yani “bu ziyaretçi geçti” diyen kısa bir dize verir. Token form gönderimiyle birlikte sunucunuza gider. Asıl karar yalnızca orada verilir: sunucunuz token'ı gizli anahtarla birlikte sağlayıcıya gönderir ve bir yanıt alır; başarı veya başarısızlık, reCAPTCHA v3 için ayrıca puan. Bu zincirin herhangi bir halkası eksikse bileşen hâlâ tamamen normal görünür, ancak form işleyicinize doğrudan gönderim yapan bir bot engelsiz geçer.

CAPTCHA'nın bağlı olduğu zincir
1Betik yüklenir
Sağlayıcının betiği form sayfasında yüklenir ve çalışmasına izin verilir.
2Token verilir
Tarayıcı yalnızca bir kez kullanılabilen, kısa ömürlü bir token alır.
3Token gönderilir
Token, form alanlarıyla birlikte sunucuya gönderilir.
4Sunucu doğrular
Sunucunuz token'ı gizli anahtarı kullanarak sağlayıcıyla doğrular.
5Sunucu karar verir
Yanıt olumlu değilse (ve v3 için puan yeterince yüksek değilse) gönderim reddedilir.
Koruma yalnızca her adım çalışırsa vardır; belirleyici adımlar ise gözden uzakta, sunucuda gerçekleşir.

Her şeyi geçiren test anahtarı

Google, hCaptcha ve Cloudflare, geliştiricilerin bulmaca çözmeden otomatik testler çalıştırabilmesi için özel test anahtarları yayımlar. Eşleşen test gizli anahtarıyla doğrulama her zaman başarılı olur; zaten tek amaçları budur. Yerel ve hazırlık ortamları için tasarlanmıştır, ancak canlı ortama geçişte sık sık kalırlar: geliştirici kurulum sırasında bunları yapıştırır, site yayına girer ve kimse anahtarları değiştirmez. reCAPTCHA en azından bileşende yalnızca test amaçlı olduğuna dair bir bildirim gösterir, ancak görünmez bir kurulumda buna pek kimse bakmaz. Test site anahtarı ve test gizli anahtarı birlikte canlıdaysa insandan veya bottan gelmesine bakılmaksızın her gönderim geçer; yalnızca site anahtarı test anahtarıysa bunun yerine doğrulama başarısız olur ve gerçek mesajlar reddedilebilir.

Kimsenin kontrol etmediği token

İkinci klasik hata, sağlayıcıya hiç sormayan sunucudur. Bileşen çalışır, token oluşturulup gönderilir ve ardından form işleyicisi onu yok sayar. Tipik kaynaklar elle yazılmış formlar, yalnızca tarayıcı tarafını kapsayan kopyalanmış kod parçaları ve yarım bırakılmış eklenti ayarlarıdır. Yakın bir benzeri de şudur: sunucu doğrulama hizmetini çağırır, ancak yalnızca isteğin gerçekleşip gerçekleşmediğini kontrol eder, yanıtın ne dediğini değil. Ya da reCAPTCHA v3 puan eşiği 0 olarak ayarlanmıştır ve bu, hizmetin döndürebileceği her puanı kabul eder. Bazı işleyiciler ayrıca hata durumunda açık kalır: token eksikse veya doğrulama başarısızsa mesajı yine de kabul ederler; bot da token'ı hiç eklemez.

Bileşen gerçekte hiç yüklenmediğinde

Diğer yanlış yapılandırmalar ise tarayıcı tarafını bozar. Site anahtarı alan adı için kayıtlı değilse — hazırlık ortamından canlıya geçiş, alan adı değişikliği veya yeni bir alt alan adından sonra tipiktir — sağlayıcı token vermeyi reddeder ve bileşende veya tarayıcı konsolunda hata gösterir. Tema değişikliği veya eklenti güncellemesinden sonra bileşen işaretlemesi sayfada kalırken ona hayat veren betik kaybolmuş olabilir. Bir çerez rıza aracı, CAPTCHA betiğini ziyaretçi kabul edene kadar engelliyorsa aynı etkiyi yapabilir. Sonrasında ne olacağı sunucuya bağlıdır: geçerli token'da ısrar ediyorsa gerçek ziyaretçiler artık mesaj gönderemez ve kaybolan talepleri kimse fark etmez; ısrar etmiyorsa botlar serbestçe geçer.

İki durum daha kolayca gözden kaçar. reCAPTCHA v3'te köşedeki rozet yalnızca betiğin, belki tema veya başka bir eklenti tarafından, sayfanın bir yerinde yüklendiğini gösterir; oysa form eklentisinin kendi entegrasyonu kapalı olabilir. Ayrıca önbellek eklentileri bir sayfayı HTML içine gömülü token ile birlikte saklayabilir. CAPTCHA token'ları yalnızca birkaç dakika geçerlidir ve sadece bir kez doğrulanabilir; bu nedenle önbellekteki token gerçek ziyaretçiler için başarısız olur. Kontrolü kapatmak şeklindeki cazip “çözüm” ise korumayı sessizce kaldırır.

Görünüm ve gerçeklik
Gördüğünüz
  • Bileşen “yalnızca test amaçlıdır” bildirimi gösterir
  • v3 rozeti köşededir
  • Bileşen görüntülenir ve token döndürür
  • Spam durmuştur, ama gerçek talepler de
Gerçekte olabilecekler
  • Herkese açık test anahtarları kullanılıyordur ve her doğrulama başarılı olur
  • Form eklentisinin reCAPTCHA entegrasyonu kapalıdır
  • Sunucu token'ı doğrulama için hiç göndermez veya sonucu yok sayar
  • Site anahtarı alan adı için kayıtlı değildir veya önbellekteki token'ların süresi dolmuştur

Kısa bir öz kontrol

  1. 1Form sayfasını özel pencerede açın, tarayıcının geliştirici araçlarını açın ve konsolda CAPTCHA betiğinden gelen hatalara bakın.
  2. 2Bileşenin gerçekten göründüğünü, bir kez çerez bildirimini kabul etmeden önce ve bir kez sonra kontrol edin; bileşen yokken formun gönderilemediğinden emin olun.
  3. 3Sağlayıcının yönetim konsolunda site anahtarının canlı alan adınızı (www gibi varyantlar dahil) listelediğini ve form eklentinizdeki veya kodunuzdaki anahtarların bununla eşleştiğini kontrol edin; belgelerdeki veya hazırlık ortamındaki anahtarlar olmamalıdır.
  4. 4Form eklentisi ayarlarında CAPTCHA entegrasyonunun bu belirli form için etkin olduğundan emin olun; reCAPTCHA v3 için puan eşiğinin 0'ın üzerinde olduğunu kontrol edin.
  5. 5Koda erişiminiz varsa sunucu tarafı doğrulamayı bulun ve yanıt olumsuz olduğunda veya token eksik olduğunda gönderimi reddettiğini kontrol edin.
  6. 6Form sayfasını tam sayfa önbelleklemesinden çıkarın veya token'ın tarayıcıda yeni oluşturulduğundan emin olun.
  7. 7Gerçek bir test mesajı gönderin ve ulaştığını kontrol edin; tema, eklenti veya rıza aracındaki değişikliklerden sonra kontrolü tekrarlayın.
Dışarıdan yapılan bir kontrolün görebilecekleri ve göremeyecekleri
Test anahtarları, betiği olmayan bileşen işaretlemesi, konsol hataları ve engellenen betikler dışarıdan görünür; formexposed.com'daki ücretsiz kontrol, hiçbir şey göndermeden tam olarak bu sinyalleri arar. Sunucunuzun token'ı gerçekten doğrulayıp doğrulamadığı sayfada görünmez; bu ancak sunucu kodunuzda veya gerçek bir gönderimde ortaya çıkar.

CAPTCHA bir katmandır, korumanın tamamı değildir. Tuzak alan, zaman kontrolü ve sunucu tarafı filtrelemeyle birleştirildiğinde, bir yerdeki yanlış yapılandırma formu tamamen açık bırakmaz. Formlarınızın durumunu hızlıca görmek istiyorsanız alan adınızı formexposed.com'a girin; rapor, CAPTCHA kurulumunuzun dışarıdan görülebilen bölümlerinin düzgün olup olmadığını gösterir.