Dokumen ini menunjukkan cara menggunakan perlindungan terhadap penipuan pulsa SMS reCAPTCHA untuk mendeteksi dan mencegah serangan pumping SMS di bisnis yang mengandalkan SMS untuk autentikasi 2 langkah (2FA) atau verifikasi telepon, yang merupakan target potensial untuk penipuan pulsa SMS.
Autentikasi berbasis SMS (2FA dan login) adalah standar industri untuk keamanan login dan pendaftaran, tetapi tidak memberikan perlindungan terhadap penipuan pulsa SMS atau serangan pumping SMS. Sebelum Anda mengirim SMS, perlindungan terhadap penipuan pulsa SMS reCAPTCHA akan memberikan skor risiko yang menunjukkan kemungkinan nomor telepon tersebut melakukan penipuan pulsa SMS. Berdasarkan skor ini, Anda dapat mengizinkan atau memblokir pesan SMS penipuan sebelum dikirim ke penyedia SMS Anda.
Untuk informasi tambahan, lihat blog perlindungan penipuan pulsa SMS reCAPTCHA.
Sebelum memulai
Bergantung pada apakah Anda pengguna reCAPTCHA lama atau baru menggunakan reCAPTCHA, ikuti petunjuk di tab yang sesuai:
Pengguna reCAPTCHA yang sudah ada
Jika Anda sudah menjadi pengguna reCAPTCHA, aktifkan perlindungan terhadap penipuan pulsa SMS reCAPTCHA di project Google Cloud Anda:
Di konsol Google Cloud, buka halaman reCAPTCHA.
Pastikan nama project Anda muncul di pemilih resource.
Jika tidak melihat nama project, klik pemilih resource, lalu pilih project Anda.
Klik
Setelan.Jika pelindung akun reCAPTCHA tidak diaktifkan untuk project Anda, lakukan hal berikut:
- Di panel Pembela akun, klik Aktifkan.
- Dalam dialog Konfigurasi Account Defender, klik Aktifkan.
Di panel SMS Toll Fraud Protection, klik Configure.
Klik tombol Aktifkan, lalu klik Simpan.
Mungkin perlu waktu beberapa menit agar pengaktifan perlindungan terhadap penipuan pulsa SMS reCAPTCHA diterapkan ke sistem kami. Setelah pengaktifan fitur diterapkan ke sistem kami, Anda akan mulai menerima respons terkait perlindungan penipuan SMS tol reCAPTCHA sebagai bagian dari penilaian.
Pengguna reCAPTCHA baru
Jika Anda baru menggunakan reCAPTCHA, lakukan hal berikut:
-
Bergantung pada apakah Anda ingin menggunakan perlindungan terhadap penipuan pulsa SMS reCAPTCHA di situs atau aplikasi seluler, ikuti langkah-langkah berikut untuk mengintegrasikan reCAPTCHA:
Situs
Aplikasi seluler
- Buat kunci berbasis skor untuk aplikasi seluler Anda.
- Mengintegrasikan reCAPTCHA dengan aplikasi iOS atau aplikasi Android
- Aktifkan reCAPTCHA SMS toll fraud protection di project Google Cloud Anda:
Di konsol Google Cloud, buka halaman reCAPTCHA.
Pastikan nama project Anda muncul di pemilih resource.
Jika tidak melihat nama project, klik pemilih resource, lalu pilih project Anda.
Klik
Setelan.Jika pelindung akun reCAPTCHA tidak diaktifkan untuk project Anda, lakukan hal berikut:
- Di panel Pembela akun, klik Aktifkan.
- Dalam dialog Konfigurasi Account Defender, klik Aktifkan.
Di panel SMS Toll Fraud Protection, klik Configure.
Klik tombol Aktifkan, lalu klik Simpan.
Mungkin perlu waktu beberapa menit agar pengaktifan perlindungan terhadap penipuan pulsa SMS reCAPTCHA diterapkan ke sistem kami. Setelah pengaktifan fitur diterapkan ke sistem kami, Anda akan mulai menerima respons terkait perlindungan penipuan SMS tol reCAPTCHA sebagai bagian dari penilaian.
Membuat penilaian dengan nomor telepon
Untuk perlindungan penipuan SMS tol reCAPTCHA, buat penilaian dengan token yang dihasilkan oleh fungsi execute()
dan nomor telepon, menggunakan Library Klien reCAPTCHA atau REST API dari backend Anda.
Dokumen ini menunjukkan cara membuat penilaian menggunakan REST API. Untuk mempelajari cara membuat penilaian menggunakan Library Klien, lihat Membuat penilaian.
Sebelum membuat penilaian, lakukan hal berikut:
Siapkan autentikasi ke reCAPTCHA.
Metode autentikasi yang Anda pilih bergantung pada lingkungan tempat reCAPTCHA disiapkan. Tabel berikut membantu Anda memilih metode autentikasi yang sesuai dan antarmuka yang didukung untuk menyiapkan autentikasi:
Lingkungan Antarmuka Metode autentikasi Google Cloud - REST
- Library klien
Gunakan akun layanan terlampir. Lokal atau penyedia cloud lain REST Gunakan kunci API atau Workload identity federation. Jika Anda ingin menggunakan kunci API, sebaiknya amankan kunci API dengan menerapkan pembatasan kunci API.
Library klien Gunakan resource berikut:
- Untuk Python atau Java, gunakan kunci API atau Workload identity federation.
Jika Anda ingin menggunakan kunci API, sebaiknya amankan kunci API dengan menerapkan pembatasan kunci API.
- Untuk bahasa lain, gunakan Workload identity federation.
Pilih ID akun
accountId
yang stabil dan tidak sering diubah oleh pengguna dan berikan ke penilaian dalam metodeprojects.assessments.create
. ID akun 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 melakukan penyalahgunaan dan menggunakan pengetahuan tentang pola penyalahgunaan lintas situs yang terkait dengan ID ini.Atau, jika Anda memiliki User-ID 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 stabil menjadi ID akun spesifik per situs yang buram. ID ini masih diperlukan agar reCAPTCHA account defender dapat memahami pola aktivitas pengguna dan mendeteksi perilaku yang tidak normal, tetapi tidak dibagikan di situs lain.
Pilih ID akun yang stabil dan buat buram sebelum dikirim ke reCAPTCHA dengan menggunakan enkripsi atau hashing:
enkripsi (direkomendasikan): mengenkripsi ID akun menggunakan metode enkripsi deterministik yang menghasilkan ciphertext yang stabil. Untuk petunjuk selengkapnya, 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 bersifat satu arah, Anda perlu mempertahankan pemetaan antara hash yang dihasilkan dan ID pengguna agar dapat memetakan ID akun yang di-hash yang ditampilkan kembali ke akun asli.
Tambahkan parameter accountId
dan nomor telepon dalam format E.164 sebagai
UserId
untuk
diverifikasi dalam penilaian di metode projects.assessments.create
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- TOKEN: token yang ditampilkan dari panggilan
grecaptcha.enterprise.execute()
. - KEY_ID: kunci berbasis skor yang Anda instal di situs.
- ACCOUNT_ID: ID untuk akun pengguna yang unik untuk situs Anda.
- PHONE_NUMBER: nomor telepon yang perlu diperiksa apakah berbahaya atau tidak. Nomor telepon harus dalam format E.164 dan tidak boleh di-hash atau dienkripsi.
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": [ { "phoneNumber": "PHONE_NUMBER" } ] } } }
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:
{ "event": { … }, "name": "ASSESSMENT_ID", "smsFraudAssessment": { "smsFraudRisk": 0.3 } }
Respons yang Anda terima menyertakan skor smsFraudRisk
di
kolom smsFraudAssessment
. Makin tinggi skornya, makin besar kemungkinan
nomor telepon berisiko; makin rendah skornya, makin besar kemungkinan nomor telepon
merupakan nomor yang sah.
Anda bertanggung jawab atas tindakan yang Anda lakukan berdasarkan penilaian.
Untuk integrasi yang paling sederhana, Anda dapat menetapkan nilai minimum pada smsFraudRisk
untuk
berkontribusi pada keputusan Anda.
Memberikan anotasi pada penilaian
Untuk melacak traffic SMS dan meningkatkan deteksi penipuan, Anda harus menambahkan anotasi pada penilaian dalam waktu 10 menit setelah SMS dikirim atau setelah nomor telepon berhasil diverifikasi.
Anda menganotasi penilaian dengan mengirim permintaan ke metode projects.assessments.annotate
dengan ID penilaian. Dalam isi permintaan tersebut, sertakan
nomor telepon dalam format E.164 di kolom phoneAuthenticationEvent
.
Untuk menganotasi 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 peristiwa real-time di label
reasons
dalam beberapa detik atau menit setelah peristiwa karena hal ini memengaruhi deteksi real-time.Nilai yang memungkinkan:
INITIATED_TWO_FACTOR
: kode verifikasi melalui SMS dikirim.PASSED_TWO_FACTOR
: kode verifikasi berhasil diverifikasi.FAILED_TWO_FACTOR
: kode verifikasi tidak valid.
{ "reasons": ["INITIATED_TWO_FACTOR"], "phoneAuthenticationEvent": { "phoneNumber": "+18005550175" } }
annotation
Opsional. Label untuk menunjukkan legitimasi penilaian.
Berikan fakta tentang peristiwa login dan pendaftaran untuk memvalidasi atau memperbaiki penilaian risiko Anda di label
annotation
.Kemungkinan nilai:
LEGITIMATE
atauFRAUDULENT
.Sebaiknya kirim informasi ini dalam beberapa detik atau menit setelah peristiwa karena hal ini memengaruhi deteksi real-time.
{ "annotation": "LEGITIMATE" }
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 tersebut sah atau menipu.
- REASONS: alasan yang mendukung anotasi Anda. Untuk mengetahui daftar kemungkinan nilai, lihat nilai alasan.
- PHONE_NUMBER: nomor telepon yang dinilai. Nomor telepon harus dalam format E.164 dan tidak boleh di-hash atau dienkripsi.
Metode HTTP dan URL:
POST https://recaptchaenterprise.googleapis.com/v1/ASSESSMENT_ID:annotate
Isi JSON permintaan:
{ "annotation": ANNOTATION, "reasons": REASONS, "phoneAuthenticationEvent": { "phoneNumber": "PHONE_NUMBER" } }
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 berhasil (2xx) dan respons kosong.
- ASSESSMENT_ID: nilai kolom