Dokumen ini menunjukkan cara menggunakan reCAPTCHA account defender untuk mendeteksi dan mencegah aktivitas penipuan terkait akun di situs.
reCAPTCHA membantu Anda melindungi tindakan penting, seperti login dan checkout. Namun, ada banyak bentuk penyalahgunaan akun yang tidak terlalu terlihat yang dapat dideteksi dengan mengamati perilaku pengguna tertentu di situs selama jangka waktu tertentu. Pembela akun reCAPTCHA membantu mengidentifikasi jenis penyalahgunaan yang tidak terlalu terlihat ini dengan membuat model khusus situs untuk situs Anda guna mendeteksi tren perilaku mencurigakan atau perubahan aktivitas. Dengan menggunakan model khusus situs, reCAPTCHA account defender membantu Anda mendeteksi hal berikut:
- Aktivitas mencurigakan
- Akun dengan perilaku serupa
- Permintaan yang berasal dari perangkat yang ditandai sebagai tepercaya untuk pengguna tertentu
Berdasarkan analisis reCAPTCHA account defender dan model khusus situs, Anda dapat melakukan tindakan berikut:
- Membatasi atau menonaktifkan akun penipuan.
- Mencegah upaya pengambilalihan akun.
- Memitigasi pengambilalihan akun yang berhasil.
- Berikan akses hanya untuk permintaan yang berasal dari akun pengguna yang sah.
- Mengurangi hambatan bagi pengguna yang login dari salah satu perangkat tepercaya mereka.
Sebelum memulai
Mengonfigurasi halaman web untuk reCAPTCHA account defender
Pembela akun reCAPTCHA memerlukan pemahaman yang komprehensif tentang aktivitas akun untuk memungkinkan deteksi yang efektif. Untuk mulai memasukkan aktivitas terkait akun ke reCAPTCHA account defender, serta membuat dan meningkatkan kualitas model khusus situs Anda, lakukan hal berikut:
- Aktifkan pengumpulan data telemetri horizontal.
- Mendapatkan laporan tentang tindakan pengguna penting.
- Menilai peristiwa pengguna penting.
- Anotasi peristiwa pengguna untuk menyesuaikan model khusus situs Anda.
Aktifkan pengumpulan data telemetri horizontal
Pembela akun reCAPTCHA memerlukan tampilan lengkap tindakan pengguna, seperti apakah pengguna login atau mengarah ke login. Untuk mengaktifkan pengumpulan data telemetri horizontal secara pasif oleh reCAPTCHA account defender, muat skrip JavaScript reCAPTCHA dengan kunci situs berbasis skor yang Anda buat di latar belakang semua halaman web yang merupakan bagian dari alur kerja pengguna Anda.
Contoh berikut menunjukkan cara memuat skrip JavaScript reCAPTCHA di halaman web.
<head> <script src="https://www.google.com/recaptcha/enterprise.js?render=KEY_ID"></script> .... </head>
Melaporkan tindakan pengguna penting
Untuk mendeteksi pola aktivitas mencurigakan dan membangun pemahaman yang lebih baik tentang pola aktivitas umum di situs Anda, pelindung akun reCAPTCHA memerlukan informasi tentang tindakan pengguna yang penting. Oleh karena itu, laporkan tindakan pengguna penting di halaman web dengan memanggil grecaptcha.enterprise.execute() pada tindakan pengguna penting tersebut.
Sebaiknya laporkan semua tindakan pengguna penting karena akan membantu pengumpulan sinyal tambahan. Untuk setiap tindakan pengguna yang ingin Anda laporkan,
ganti nilai parameter action
dari grecaptcha.enterprise.execute()
dengan nama tindakan yang menjelaskan tindakan pengguna.
Tabel berikut mencantumkan nama tindakan yang dapat Anda gunakan saat melaporkan tindakan pengguna penting.
Nama tindakan | Peristiwa yang dimulai pengguna atau tindakan pengguna |
---|---|
LOGIN |
Login ke situs. |
REGISTRATION |
Pendaftaran di situs. |
SECURITY_QUESTION_CHANGE |
Permintaan untuk mengubah pertanyaan keamanan. |
PASSWORD_RESET |
Minta untuk mereset sandi. |
PHONE_NUMBER_UPDATE |
Permintaan untuk memperbarui nomor telepon. |
EMAIL_UPDATE |
Permintaan untuk memperbarui alamat email. |
ACCOUNT_UPDATE |
Permintaan untuk memperbarui informasi terkait akun, seperti detail kontak. |
TRIGGER_MFA |
Tindakan yang memicu tantangan MFA. |
REDEEM_CODE |
Permintaan untuk menukarkan kode. |
LIST_PAYMENT_METHODS |
Ambil daftar metode pembayaran. |
Contoh berikut menunjukkan cara memanggil grecaptcha.enterprise.execute()
saat memperbarui nomor telepon:
<script> function onClick(e) { e.preventDefault(); grecaptcha.enterprise.ready(async () => { const token = await grecaptcha.enterprise.execute('KEY_ID', {action: 'PHONE_NUMBER_UPDATE'}); }); } </script>
Menilai peristiwa pengguna penting
Saat Anda memanggil grecaptcha.enterprise.execute()
pada tindakan pengguna, token akan dibuat. Untuk peristiwa pengguna penting, seperti login yang berhasil dan gagal, pendaftaran, dan tindakan pengguna yang login, buat penilaian untuk menilai hasil panggilan grecaptcha.enterprise.execute()
. Penilaian
memberikan verdict risiko, yang dapat Anda gunakan untuk membuat keputusan tentang cara menangani
aktivitas yang berpotensi menipu. Beberapa tindakan yang dapat Anda lakukan adalah memblokir permintaan yang mencurigakan, memverifikasi login yang berisiko, dan menyelidiki akun yang menarik.
Pembela akun reCAPTCHA mengharuskan Anda memberikan ID akun yang stabil untuk mengatribusikan aktivitas pengguna – seperti permintaan login, permintaan login, dan permintaan pendaftaran – ke akun tertentu. Hal ini membantu reCAPTCHA Account Defender memahami pola aktivitas pengguna dan membuat model aktivitas untuk setiap akun guna mendeteksi traffic yang tidak normal dan penyalahgunaan dengan lebih baik.
Pilih ID akun accountId
yang stabil dan tidak sering diubah oleh pengguna
dan berikan ke penilaian dalam metode
projects.assessments.create
. ID akun yang stabil ini harus memiliki
nilai yang sama untuk semua peristiwa yang terkait dengan pengguna yang sama. Anda dapat memberikan hal berikut sebagai ID akun:
ID pengguna
Jika setiap akun dapat dikaitkan secara unik dengan nama pengguna, alamat email, atau nomor telepon yang stabil, Anda dapat menggunakannya sebagai accountId
. Saat Anda memberikan ID lintas situs tersebut (ID yang dapat digunakan kembali di seluruh situs), reCAPTCHA menggunakan informasi ini untuk meningkatkan perlindungan bagi akun pengguna Anda berdasarkan model lintas situs dengan menandai ID akun yang melanggar dan menggunakan pengetahuan tentang pola penyalahgunaan lintas situs yang terkait dengan ID ini.
Atau, jika Anda memiliki ID pengguna internal yang dikaitkan secara unik dengan setiap akun, Anda dapat
memberikannya sebagai accountId
.
Di-hash atau dienkripsi
Jika tidak memiliki ID pengguna internal yang secara unik dikaitkan dengan setiap akun, Anda dapat mengubah ID yang stabil menjadi ID akun spesifik per situs yang tidak transparan. ID ini tetap diperlukan agar reCAPTCHA account defender dapat memahami pola aktivitas pengguna dan mendeteksi perilaku anomali, tetapi ID ini tidak dibagikan ke situs lain.
Pilih ID akun stabil apa pun dan buat ID tersebut menjadi buram sebelum mengirimkannya ke reCAPTCHA dengan menggunakan enkripsi atau hashing:
enkripsi (direkomendasikan): mengenkripsi ID akun menggunakan metode enkripsi deterministik yang menghasilkan ciphertext stabil. Untuk petunjuk mendetail, lihat mengenkripsi data secara deterministik. Jika memilih enkripsi simetris daripada hashing, Anda tidak perlu menyimpan pemetaan antara ID pengguna dan ID pengguna buram yang sesuai. Dekripsi ID buram yang ditampilkan oleh reCAPTCHA untuk mengubahnya menjadi ID pengguna.
hashing: sebaiknya lakukan hashing pada ID akun menggunakan metode SHA256-HMAC dengan salt kustom pilihan Anda. Karena hash hanya satu arah, Anda perlu menyimpan pemetaan antara hash yang dihasilkan dan ID pengguna Anda agar Anda dapat memetakan ID akun yang di-hash yang dikembalikan ke akun asli.
Selain memberikan ID akun yang stabil untuk semua permintaan terkait akun, Anda
dapat memberikan ID akun tambahan, yang berpotensi tidak stabil, untuk beberapa permintaan tertentu.
ID akun khusus konteks yang diberikan selain accountId
membantu
pembela akun reCAPTCHA lebih memahami aktivitas pengguna dan mendeteksi upaya pengambilalihan akun untuk menjaga keamanan akun pengguna Anda. Saat Anda memberikan ID tambahan,
reCAPTCHA menggunakan informasi ini untuk meningkatkan perlindungan bagi akun pengguna Anda berdasarkan
model lintas situs dengan menandai ID akun yang menyalahgunakan dan menggunakan pengetahuan tentang pola penyalahgunaan lintas situs yang terkait dengan ID ini. Misalnya, Anda dapat memberikan hal berikut:
Nama pengguna, alamat email, atau nomor telepon yang digunakan sebagai handle login untuk permintaan login
Alamat email atau nomor telepon yang diverifikasi untuk permintaan autentikasi multi-faktor
Alamat email atau nomor telepon (primer atau sekunder) yang diberikan oleh pengguna selama permintaan pembaruan akun
Alamat email dan nomor telepon yang diberikan oleh pengguna selama permintaan pendaftaran
Tambahkan ID akun stabil yang dipilih ke parameter accountId
dalam metode
projects.assessments.create
untuk semua permintaan terkait akun. Secara opsional,
berikan ID akun tambahan untuk permintaan yang relevan dengan menggunakan kolom userIds
dalam penilaian.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Google Cloud project ID Anda
- TOKEN: token yang ditampilkan dari panggilan
grecaptcha.enterprise.execute()
- KEY_ID: Kunci reCAPTCHA yang terkait dengan situs
- ACCOUNT_ID: ID yang secara unik terkait dengan akun pengguna untuk akun pengguna ke situs Anda
- EMAIL_ADDRESS: Opsional. Alamat email yang terkait dengan permintaan ini, jika ada
- PHONE_NUMBER: Opsional. Nomor telepon yang terkait dengan permintaan ini, jika ada
- USERNAME: Opsional. Nama pengguna yang terkait dengan permintaan ini, jika ada
Metode HTTP dan URL:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments
Isi JSON permintaan:
{ "event": { "token": "TOKEN", "siteKey": "KEY_ID", "userInfo": { "accountId": "ACCOUNT_ID", "userIds": [ { "email": "EMAIL_ADDRESS" }, { "phoneNumber": "PHONE_NUMBER" }, { "username": "USERNAME" } ] } } }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{ "tokenProperties": { "valid": true, "hostname": "www.google.com", "action": "login", "createTime": "2019-03-28T12:24:17.894Z" }, "riskAnalysis": { "score": 0.6, }, "event": { "token": "TOKEN", "siteKey": "KEY", "userInfo": { "accountId": "ACCOUNT_ID" } }, "name": "projects/PROJECT_NUMBER/assessments/b6ac310000000000", "accountDefenderAssessment": { "labels": ["SUSPICIOUS_LOGIN_ACTIVITY"] } }
Contoh kode
Java
Untuk melakukan autentikasi ke reCAPTCHA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Menafsirkan hasil risiko peristiwa pengguna penting
Saat Anda membuat penilaian dengan pengaktifan account defender, account defender akan menampilkan accountDefenderAssessment
sebagai bagian dari respons penilaian.
Nilai accountDefenderAssessment
membantu
Anda menilai apakah aktivitas pengguna sah atau curang. API ini juga menampilkan
ID penilaian yang perlu Anda gunakan saat membuat anotasi peristiwa pengguna.
Contoh berikut adalah contoh respons JSON:
{ "tokenProperties": { "valid": true, "hostname": "www.google.com", "action": "login", "createTime": "2019-03-28T12:24:17.894Z" }, "riskAnalysis": { "score": 0.6, }, "event": { "token": "TOKEN", "siteKey": "KEY_ID", "expectedAction": "USER_ACTION" }, "name": "projects/PROJECT_ID/assessments/b6ac310000000000X", "accountDefenderAssessment": { labels: ["SUSPICIOUS_LOGIN_ACTIVITY"] } }
Kolom accountDefenderAssessment
dapat memiliki salah satu nilai berikut:
Nilai | Deskripsi |
---|---|
SUSPICIOUS_LOGIN_ACTIVITY |
Menunjukkan bahwa permintaan tersebut memiliki risiko tinggi credential stuffing atau pencurian akun. |
SUSPICIOUS_ACCOUNT_CREATION |
Menunjukkan bahwa permintaan mewakili risiko tinggi pembuatan akun yang melanggar. |
PROFILE_MATCH |
Menunjukkan bahwa atribut pengguna cocok dengan atribut yang telah dilihat sebelumnya untuk pengguna tertentu ini. Nilai ini adalah indikator bahwa pengguna ini berada di perangkat tepercaya yang sebelumnya digunakan untuk mengakses situs Anda.
|
RELATED_ACCOUNTS_NUMBER_HIGH |
Menunjukkan bahwa permintaan memiliki sejumlah besar akun terkait. Hal ini tidak selalu menyiratkan bahwa akun tersebut buruk, tetapi mungkin memerlukan penyelidikan lebih lanjut. |
Anotasikan peristiwa untuk menyesuaikan model spesifik situs Anda
Untuk memberikan informasi selengkapnya kepada pembela akun reCAPTCHA dan meningkatkan kualitas model deteksi khusus situs Anda, Anda harus memberi anotasi pada peristiwa yang Anda nilai dengan membuat penilaian.
Anda menganotasi penilaian dengan mengirim permintaan ke metode projects.assessments.annotate
dengan ID penilaian. Dalam isi permintaan tersebut, Anda menyertakan label yang memberikan informasi tambahan tentang peristiwa yang dijelaskan dalam penilaian.
Untuk memberi anotasi pada penilaian, lakukan hal berikut:
-
Tentukan informasi dan label yang akan ditambahkan dalam isi JSON permintaan bergantung pada kasus penggunaan Anda.
Tabel berikut mencantumkan label dan nilai yang dapat Anda gunakan untuk menganotasi peristiwa:
Label Deskripsi Contoh permintaan reasons
Wajib. Label untuk mendukung penilaian Anda. Berikan detail acara real-time dalam label
reasons
dalam beberapa detik atau menit setelah acara karena memengaruhi deteksi real-time.Untuk mengetahui daftar kemungkinan nilai, lihat nilai alasan.
Contoh: Untuk mendeteksi pengambilalihan akun, beri anotasi jika sandi yang dimasukkan benar dengan nilai
CORRECT_PASSWORD
atauINCORRECT_PASSWORD
. Jika Anda men-deploy MFA Anda sendiri, Anda dapat menambahkan nilai berikut:INITIATED_TWO_FACTOR
, danPASSED_TWO_FACTOR
atauFAILED_TWO_FACTOR
.{ "reasons": ["INCORRECT_PASSWORD"] }
annotation
Opsional. Label untuk menunjukkan keabsahan penilaian. Berikan fakta tentang peristiwa login dan pendaftaran untuk memvalidasi atau mengoreksi penilaian risiko Anda dalam label
annotation
.Nilai yang mungkin:
LEGITIMATE
atauFRAUDULENT
.Anda dapat mengirimkan informasi ini kapan saja atau sebagai bagian dari tugas batch. Namun, sebaiknya kirimkan informasi ini dalam beberapa detik atau menit setelah acara karena informasi ini memengaruhi deteksi real-time.
{ "annotation": "LEGITIMATE" }
accountId
Opsional. Label untuk mengaitkan ID akun dengan acara.
Jika Anda membuat penilaian tanpa ID akun, gunakan label ini untuk memberikan ID akun peristiwa setiap kali tersedia.
{ "accountId": "ACCOUNT_ID" }
Buat permintaan anotasi dengan label yang sesuai.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- ASSESSMENT_ID: Nilai kolom
name
yang ditampilkan dari panggilanprojects.assessments.create
. - ANNOTATION: Opsional. Label untuk menunjukkan apakah penilaian itu sah atau curang.
- REASONS: Opsional. Alasan yang mendukung anotasi Anda. Untuk daftar kemungkinan nilai, lihat nilai alasan.
- ACCOUNT_ID: Opsional. ID yang secara unik terkait dengan akun pengguna di situs Anda.
Untuk mengetahui informasi selengkapnya, lihat label untuk anotasi.
Metode HTTP dan URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Isi JSON permintaan:
{ "annotation": ANNOTATION, "reasons": REASONS, "accountId": ACCOUNT_ID }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama
request.json
, dan jalankan perintah berikut:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate"PowerShell
Simpan isi permintaan dalam file bernama
request.json
, dan jalankan perintah berikut:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate" | Select-Object -Expand ContentAnda akan menerima kode status yang menandakan proses berhasil (2xx), dan sebuah respons kosong.
- ASSESSMENT_ID: Nilai kolom
Contoh kode
Java
Untuk melakukan autentikasi ke reCAPTCHA, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Mengaktifkan pembela akun reCAPTCHA
Setelah mengonfigurasi halaman web untuk reCAPTCHA account defender, Anda dapat mengaktifkan reCAPTCHA account defender.
Di konsol Google Cloud , buka halaman reCAPTCHA.
Pastikan nama project Anda muncul di pemilih resource di bagian atas halaman.
Jika Anda tidak melihat nama project, klik pemilih resource, lalu pilih project Anda.
- Klik Setelan.
Di panel Account defender, klik Konfigurasi.
Dalam dialog Configure account defender, klik Aktifkan, lalu klik Simpan.
Mungkin perlu waktu beberapa jam agar pengaktifan pelindung akun reCAPTCHA diterapkan ke sistem kami. Setelah pengaktifan fitur disebarkan ke sistem kami, Anda akan mulai menerima respons terkait pembela akun sebagai bagian dari penilaian.