Halaman ini menjelaskan cara mendeteksi dan mencegah pengambilalihan akun (ATO) menggunakan reCAPTCHA.
Serangan ATO biasanya terjadi saat penyerang mengirim permintaan untuk login ke endpoint API menggunakan kredensial yang diperoleh dari pelanggaran data, yang juga dikenal sebagai dump sandi. Jenis serangan ini dapat berhasil, meskipun dump sandi berasal dari situs yang tidak terkait, karena manusia cenderung menggunakan kembali sandi di beberapa akun. Jenis serangan ini tidak memengaruhi pengguna yang menerapkan keamanan sandi yang tepat, seperti menggunakan pengelola sandi.
Sebelum memulai
Siapkan lingkungan Anda untuk reCAPTCHA.
Mendeteksi dan mencegah ATO
Dengan reCAPTCHA, Anda dapat mendeteksi dan mencegah ATO menggunakan salah satu opsi berikut:
Menggunakan kotak centang Saya bukan robot
Menambahkan kotak centang Saya bukan robot ke situs Anda adalah cara tercepat dan termudah untuk memberikan perlindungan terhadap ATO tanpa harus mengintegrasikan fitur tambahan, seperti verifikasi SMS atau email. Penyerang harus membayar biaya untuk menembus perlindungan ini dan opsi ini mungkin cukup untuk beberapa situs.
Tambahkan kotak centang "Saya bukan robot" di halaman web Anda.
Kode berikut adalah contoh langsung halaman login yang dilindungi oleh kotak centang:
function onSuccess(token) { // The token is included in the POST data in the g-recaptcha-response // parameter. The backend must create an Assessment with the token // and verify the token is valid. console.log(token); }
<form id="loginForm" action="?" method="POST"> Username: <input type="text" name="username"/><br/> Password: <input type="password" name="password"/><br/> <div class="g-recaptcha" data-sitekey="reCATCHA_sitekey" data-action="account_login" data-callback="onSuccess"></div> </form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
Anda dapat bereksperimen dengan kode ini di JSFiddle dengan mengklik ikon <>
di sudut kanan atas jendela kode.
<html> <head> <title>Account Login - Checkbox</title> <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script> <script> function onSuccess(token) { // The token is included in the POST data in the g-recaptcha-response // parameter. The backend must create an Assessment with the token // and verify the token is valid. console.log(token); } </script> </head> <body> <form id="loginForm" action="?" method="POST"> Username: <input type="text" name="username"/><br/> Password: <input type="password" name="password"/><br/> <div class="g-recaptcha" data-sitekey="6LeAkOgUAAAAACcy3uY6N9H9SJMS27n3Zx2OOnYK" data-action="account_login" data-callback="onSuccess"></div> </form> </body> </html>
Menggunakan skor dan tantangan kustom
Untuk melindungi dari ATO, gunakan kunci berbasis skor reCAPTCHA dan gunakan tantangan Autentikasi multi-faktor (MFA), seperti tantangan email dan SMS yang mengirimkan kode sekali pakai (OTP) kepada pengguna.
Untuk menggunakan kunci berbasis skor dan tantangan kustom, pertimbangkan opsi berikut:
Menginstal kunci berbasis skor untuk mendeteksi otomatisasi dalam ATO skala besar.
Untuk menginstal kunci berbasis skor di halaman web, lihat Menginstal kunci berbasis skor di halaman web.
Untuk menginstal kunci berbasis skor di aplikasi seluler, lihat Mengintegrasikan reCAPTCHA dengan aplikasi Android. atau Mengintegrasikan reCAPTCHA dengan aplikasi iOS.
Gunakan MFA untuk memverifikasi kepemilikan akun saat login atau untuk tindakan sensitif.
Untuk informasi selengkapnya, lihat Mengonfigurasi Autentikasi Multi-Faktor.
Bergantung pada kasus penggunaan, Anda dapat menggunakan MFA sendiri atau dengan kunci berbasis skor. Misalnya, Anda mungkin lebih memilih untuk menggunakan tantangan MFA hanya untuk skor di bawah nilai minimum tertentu untuk mengurangi hambatan.
Contoh berikut menunjukkan cara mengintegrasikan kunci berbasis skor dalam skenario login.
function submitForm() { grecaptcha.enterprise.ready(function() { grecaptcha.enterprise.execute( 'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) { document.getElementById("token").value = token; document.getElementByID("loginForm").submit(); }); }); }
<form id="loginForm" action="?" method="POST"> Username: <input type="text" name="username"/><br/> Password: <input type="password" name="password"/><br/> <input type="hidden" id="token" name="recaptcha_token"/> <button onclick="submitForm()">Login</button> </form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
Anda dapat bereksperimen dengan kode ini di JSFiddle dengan mengklik ikon <>
di sudut kanan atas jendela kode.
<html> <head> <title>Account Login - Score</title> <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script> <script> function submitForm() { grecaptcha.enterprise.ready(function() { grecaptcha.enterprise.execute( 'reCAPTCHA_site_key', {action: 'account_login'}).then(function(token) { document.getElementById("token").value = token; document.getElementByID("loginForm").submit(); }); }); } </script> </head> <body> <form id="loginForm" action="?" method="POST"> Username: <input type="text" name="username"/><br/> Password: <input type="password" name="password"/><br/> <input type="hidden" id="token" name="recaptcha_token"/> <button onclick="submitForm()">Login</button> </form> </body> </html>
Langkah selanjutnya
- Untuk mempelajari fitur perlindungan akun lainnya, lihat Fitur perlindungan akun pengguna.