CAPTCHA ada — tetapi tidak melindungi apa-apa
Gajet reCAPTCHA, hCaptcha atau Turnstile yang kelihatan tidak banyak membuktikan sama ada borang dilindungi. Berikut ialah salah konfigurasi lazim dan cara menyemak borang anda sendiri dalam beberapa minit.
Ramai pemilik laman web menambahkan CAPTCHA pada borang hubungan, melihat lencana kecil atau kotak semak muncul, lalu menganggap masalah spam selesai. Kemudian sampah terus tiba. Selalunya CAPTCHA itu sendiri tidak bermasalah — ia cuma tidak disambungkan kepada apa-apa yang boleh menghentikan bot. Artikel ini menerangkan cara lazim reCAPTCHA, hCaptcha dan Cloudflare Turnstile menjadi hiasan, serta cara menyemak borang anda sendiri.
Tempat perlindungan benar-benar berlaku
Ketiga-tiga perkhidmatan berfungsi berdasarkan prinsip yang sama. Skrip dalam pelayar menjalankan semakannya dan memberikan token kepada borang — rentetan pendek yang menyatakan «pelawat ini lulus». Token itu dihantar bersama penghantaran borang ke pelayan anda. Hanya di situlah keputusan sebenar dibuat: pelayan anda menghantar token bersama kunci rahsia kepada penyedia dan menerima jawapan — berjaya atau gagal, serta skor bagi reCAPTCHA v3. Jika mana-mana pautan dalam rantaian ini tiada, gajet masih kelihatan normal sepenuhnya, tetapi bot yang menghantar terus kepada pengendali borang anda dapat terus melepasi semakan.
Kunci ujian yang membenarkan semuanya
Google, hCaptcha dan Cloudflare menerbitkan kunci ujian khas supaya pembangun boleh menjalankan ujian automatik tanpa menyelesaikan teka-teki. Dengan kunci rahsia ujian yang sepadan, pengesahan sentiasa berjaya — itulah seluruh tujuannya. Kunci ini ditujukan untuk persekitaran setempat dan pementasan, tetapi kerap kekal apabila beralih ke produksi: pembangun menampalkannya semasa pembangunan, laman dilancarkan dan tiada siapa menggantikannya. reCAPTCHA sekurang-kurangnya menunjukkan notis pada gajet bahawa ia hanya untuk ujian, tetapi dengan persediaan tidak kelihatan, hampir tiada siapa memerhatikannya. Jika kunci laman ujian dan kunci rahsia ujian kedua-duanya digunakan dalam produksi, setiap penghantaran lulus, sama ada daripada manusia atau bot; jika hanya kunci laman ialah kunci ujian, pengesahan sebaliknya gagal dan mesej sebenar mungkin ditolak.
Token yang tidak disemak oleh sesiapa
Masalah klasik kedua ialah pelayan yang tidak pernah bertanya kepada penyedia. Gajet berjalan, token dicipta dan dihantar, kemudian pengendali borang hanya mengabaikannya. Punca biasa ialah borang yang ditulis sendiri, cebisan kod disalin yang hanya meliputi bahagian pelayar dan tetapan pemalam yang tidak disiapkan. Kes yang hampir sama: pelayan memang memanggil perkhidmatan pengesahan tetapi hanya menyemak bahawa permintaan berjaya dihantar, bukan kandungan jawapannya. Atau ambang skor untuk reCAPTCHA v3 ditetapkan kepada 0, lalu menerima setiap skor yang boleh dikembalikan oleh perkhidmatan. Sesetengah pengendali juga «membenarkan apabila gagal»: jika token tiada atau pengesahan gagal, ia tetap menerima mesej — dan bot hanya tidak menyertakan token itu.
Apabila gajet tidak pernah benar-benar dimuatkan
Salah konfigurasi lain pula merosakkan bahagian pelayar. Jika kunci laman tidak didaftarkan untuk domain — lazim selepas beralih daripada pementasan ke produksi, perubahan domain atau subdomain baharu — penyedia enggan mengeluarkan token dan menunjukkan ralat pada gajet atau konsol pelayar. Selepas pertukaran tema atau kemas kini pemalam, penanda gajet mungkin masih berada pada halaman sedangkan skrip yang menghidupkannya sudah tiada. Alat persetujuan kuki boleh memberikan kesan yang sama jika menyekat skrip CAPTCHA sehingga pelawat bersetuju. Apa yang berlaku seterusnya bergantung pada pelayan: jika ia menuntut token sah, pelawat sebenar tidak lagi dapat menghantar mesej dan tiada siapa menyedari pertanyaan yang hilang; jika tidak, bot bebas melepasi semakan.
Dua lagi keadaan mudah terlepas pandang. Dengan reCAPTCHA v3, lencana di penjuru hanya menunjukkan bahawa skrip dimuatkan di suatu tempat pada halaman — mungkin oleh tema atau pemalam lain — sedangkan integrasi dalam pemalam borang itu sendiri dimatikan. Pemalam cache juga boleh menyimpan halaman bersama token yang dibenamkan dalam HTML. Token CAPTCHA hanya sah selama beberapa minit dan boleh disahkan sekali sahaja, maka token dalam cache gagal untuk pelawat sebenar; «pembaikan» yang menggoda, iaitu mematikan semakan, secara senyap membuang perlindungan.
- Gajet menunjukkan notis «for testing purposes only»
- Lencana v3 berada di penjuru
- Gajet dipaparkan dan mengembalikan token
- Spam sudah berhenti — tetapi pertanyaan sebenar juga
- Kunci ujian awam digunakan dan setiap pengesahan berjaya
- Integrasi reCAPTCHA dalam pemalam borang dimatikan
- Pelayan tidak pernah menghantar token untuk pengesahan, atau mengabaikan hasilnya
- Kunci laman tidak didaftarkan untuk domain, atau token dalam cache telah luput
Semakan kendiri ringkas
- 1Buka halaman borang dalam tetingkap peribadi, buka alat pembangun pelayar dan cari ralat daripada skrip CAPTCHA dalam konsol.
- 2Semak bahawa gajet benar-benar muncul — sekali sebelum dan sekali selepas menerima sepanduk kuki — dan bahawa borang tidak boleh dihantar apabila gajet tiada.
- 3Dalam konsol pentadbir penyedia, semak bahawa kunci laman menyenaraikan domain produksi anda (termasuk variasi seperti www), dan bahawa kunci dalam pemalam borang atau kod anda sepadan dengannya — bukannya kunci daripada dokumentasi atau persediaan pementasan.
- 4Dalam tetapan pemalam borang, pastikan integrasi CAPTCHA diaktifkan untuk borang khusus ini; bagi reCAPTCHA v3, semak bahawa ambang skor melebihi 0.
- 5Jika anda mempunyai akses kepada kod, cari pengesahan pada pelayan dan semak bahawa ia menolak penghantaran apabila jawapannya negatif atau token tiada.
- 6Kecualikan halaman borang daripada cache halaman penuh, atau pastikan token dicipta baharu dalam pelayar.
- 7Hantar mesej ujian sebenar dan semak bahawa ia tiba; ulang semakan selepas perubahan pada tema, pemalam atau alat persetujuan.
CAPTCHA ialah satu lapisan, bukan keseluruhan perlindungan. Apabila digabungkan dengan medan perangkap, semakan masa dan penapisan pada pelayan, salah konfigurasi di satu tempat tidak membiarkan borang terbuka luas. Jika anda mahu gambaran pantas tentang kedudukan borang anda, masukkan domain anda di formexposed.com — laporan menunjukkan sama ada bahagian persediaan CAPTCHA anda yang kelihatan dari luar berada dalam keadaan baik.