CAPTCHA ada – tetapi tidak melindungi apa pun
Widget reCAPTCHA, hCaptcha, atau Turnstile yang terlihat tidak banyak menunjukkan apakah formulir terlindungi. Berikut salah konfigurasi umum dan cara memeriksa formulir sendiri dalam beberapa menit.
Banyak pemilik situs menambahkan CAPTCHA ke formulir kontak, melihat lencana kecil atau kotak centang muncul, dan menganggap masalah spam selesai. Lalu sampah terus datang. Sering CAPTCHA sendiri baik-baik saja – hanya tidak terhubung dengan apa pun yang dapat menghentikan bot. Artikel ini membahas cara umum reCAPTCHA, hCaptcha, dan Cloudflare Turnstile menjadi hiasan, serta cara memeriksa formulir sendiri.
Tempat perlindungan sebenarnya terjadi
Ketiga layanan bekerja dengan prinsip sama. Skrip dalam browser menjalankan pemeriksaan dan memberi token pada formulir – rangkaian teks singkat yang menyatakan “pengunjung ini lolos”. Token ikut dalam pengiriman formulir ke server Anda. Baru di sana keputusan nyata terjadi: server mengirim token bersama kunci rahasia kepada penyedia dan menerima jawaban – berhasil atau gagal, serta untuk reCAPTCHA v3 juga skor. Jika satu mata rantai hilang, widget tetap tampak normal, tetapi bot yang langsung mengirim ke penangan formulir Anda lolos begitu saja.
Kunci uji yang meloloskan semua
Google, hCaptcha, dan Cloudflare menerbitkan kunci uji khusus agar pengembang dapat menjalankan pengujian otomatis tanpa memecahkan teka-teki. Dengan rahasia uji yang sesuai, verifikasi selalu berhasil – itulah tujuannya. Kunci ditujukan untuk lingkungan lokal dan staging, tetapi sering terbawa ke produksi: pengembang menempelkannya selama pembangunan, situs diluncurkan, dan tidak ada yang menggantinya. reCAPTCHA setidaknya menampilkan pemberitahuan dalam widget bahwa hanya untuk pengujian, tetapi dalam penyiapan tidak terlihat hampir tidak ada yang memeriksa. Jika kunci situs uji dan rahasia uji sama-sama digunakan di produksi, setiap pengiriman lolos, dari manusia maupun bot; jika hanya kunci situs merupakan kunci uji, verifikasi justru gagal dan pesan nyata dapat ditolak.
Token yang tidak diperiksa siapa pun
Kesalahan klasik kedua adalah server yang tidak pernah bertanya kepada penyedia. Widget berjalan, token dibuat dan dikirim, lalu penangan formulir mengabaikannya. Sumber umum adalah formulir tulisan sendiri, potongan kode salinan yang hanya mencakup sisi browser, dan pengaturan plugin setengah selesai. Kasus serupa: server memanggil layanan verifikasi tetapi hanya memeriksa permintaan berhasil dilakukan, bukan isi jawaban. Atau ambang skor reCAPTCHA v3 ditetapkan 0, yang menerima semua skor layanan. Sebagian penangan juga “meloloskan saat gagal”: jika token tidak ada atau verifikasi gagal, pesan tetap diterima – dan bot cukup tidak menyertakan token.
Ketika widget tidak pernah benar-benar dimuat
Salah konfigurasi lain justru merusak sisi browser. Jika kunci situs tidak terdaftar untuk domain – umum setelah perpindahan staging ke produksi, perubahan domain, atau subdomain baru – penyedia menolak menerbitkan token dan menampilkan kesalahan pada widget atau konsol browser. Setelah pergantian tema atau pembaruan plugin, markup widget mungkin masih ada pada halaman tetapi skrip penggeraknya hilang. Alat persetujuan cookie dapat berdampak sama jika memblokir skrip CAPTCHA hingga pengunjung menyetujui. Berikutnya bergantung pada server: jika mewajibkan token sah, pengunjung nyata tidak lagi dapat mengirim pesan dan tidak ada yang menyadari pertanyaan hilang; jika tidak, bot lolos bebas.
Dua kasus lagi mudah terlewat. Dengan reCAPTCHA v3, lencana di sudut hanya menunjukkan skrip dimuat di suatu tempat pada halaman – mungkin oleh tema atau plugin lain – sementara integrasi plugin formulir sendiri nonaktif. Dan plugin cache dapat menyimpan halaman bersama token tertanam dalam HTML. Token CAPTCHA hanya berlaku beberapa menit dan hanya dapat diverifikasi sekali, sehingga token tercache gagal bagi pengunjung nyata; “perbaikan” menggoda berupa menonaktifkan pemeriksaan diam-diam menghapus perlindungan.
- Widget menampilkan pemberitahuan “hanya untuk pengujian”
- Lencana v3 berada di sudut
- Widget tampil dan mengembalikan token
- Spam berhenti – tetapi pertanyaan nyata juga
- Kunci uji publik digunakan dan setiap verifikasi berhasil
- Integrasi reCAPTCHA plugin formulir nonaktif
- Server tidak pernah mengirim token untuk verifikasi atau mengabaikan hasil
- Kunci situs tidak terdaftar untuk domain, atau token tercache kedaluwarsa
Pemeriksaan mandiri singkat
- 1Buka halaman formulir dalam jendela privat, buka alat pengembang browser, dan cari kesalahan skrip CAPTCHA pada konsol.
- 2Pastikan widget benar-benar muncul – sebelum dan sesudah menerima banner cookie – serta formulir tidak dapat dikirim ketika widget tidak ada.
- 3Dalam konsol admin penyedia, pastikan kunci situs mencantumkan domain produksi Anda (termasuk varian seperti www), dan kunci plugin formulir atau kode sesuai – bukan kunci dokumentasi atau staging.
- 4Dalam pengaturan plugin formulir, pastikan integrasi CAPTCHA aktif untuk formulir tertentu ini; untuk reCAPTCHA v3, pastikan ambang skor di atas 0.
- 5Jika memiliki akses kode, temukan verifikasi sisi server dan pastikan pengiriman ditolak ketika jawaban negatif atau token tidak ada.
- 6Kecualikan halaman formulir dari cache seluruh halaman, atau pastikan token dibuat baru dalam browser.
- 7Kirim pesan uji nyata dan pastikan tiba; ulangi setelah perubahan tema, plugin, atau alat persetujuan.
CAPTCHA adalah satu lapisan, bukan seluruh perlindungan. Digabungkan dengan kolom honeypot, pemeriksaan waktu, dan penyaringan sisi server, salah konfigurasi di satu tempat tidak membuat formulir terbuka lebar. Jika ingin gambaran cepat kondisi formulir, masukkan domain pada formexposed.com – laporan menunjukkan apakah bagian konfigurasi CAPTCHA yang terlihat dari luar sudah benar.