Mencegah penyalahgunaan API OTP

Jika skrip terus-menerus memanggil alur pengiriman OTP, pengguna menerima banyak kode yang tidak diminta, saldo cepat habis, dan reputasi saluran dapat turun. EngageLab OTP dapat membatasi frekuensi dan volume di sisi pengiriman, tetapi tidak dapat menghentikan endpoint «Dapatkan kode verifikasi» yang tidak terautentikasi di aplikasi Anda.

Artikel ini menjelaskan cara menggabungkan kemampuan platform dengan perlindungan sisi bisnis untuk menurunkan risiko penyalahgunaan API.

Arsitektur yang benar

API EngageLab OTP hanya boleh dipanggil dari server Anda. Jangan memanggilnya langsung dari browser, klien App, atau mini program.

Pengguna → Frontend Anda (masuk / daftar / atur ulang kata sandi) → Backend Anda (pemeriksaan sesi, CAPTCHA, batas laju bisnis) → API EngageLab OTP (dengan API Key dan end_user_ip)
              
              Pengguna → Frontend Anda (masuk / daftar / atur ulang kata sandi)
     → Backend Anda (pemeriksaan sesi, CAPTCHA, batas laju bisnis)
     → API EngageLab OTP (dengan API Key dan end_user_ip)

            
Tampilkan blok kode ini di jendela mengambang
  • Simpan dev_key dan dev_secret hanya di server. Jangan menempatkannya di kode frontend, paket aplikasi, atau repositori publik.
  • Frontend hanya boleh memanggil API «Dapatkan kode verifikasi» milik Anda. Jangan terhubung langsung ke https://otp.api.engagelab.cc.
  • Untuk API Key produksi, konfigurasikan daftar putih IP pemanggil. Lihat API Key.

Jangan mencampur dua jenis IP

Pengaturan / parameter Yang diisi Yang diblokir
Daftar putih IP API Key IP keluar server Anda IP asing yang memanggil API OTP dengan Key
end_user_ip pada permintaan kirim IP pengguna akhir IP pengguna yang sama yang berulang meminta kode dalam waktu singkat

Setelah mengaktifkan batas «berdasarkan alamat IP» di Pusat Keamanan, Anda harus mengirim end_user_ip pada permintaan Pengiriman OTP agar batas berlaku. Kirim IP publik perangkat pengguna, bukan IP server Anda.

Perlindungan sisi platform

Lengkapi konfigurasi berikut di konsol OTP untuk membatasi kerugian jika pengiriman disalahgunakan:

Yang dilakukan Di mana Tujuan
Mengatur daftar putih IP dan masa berlaku API Key, serta memastikan dapat dinonaktifkan kapan saja API Key Membatasi siapa yang dapat memanggil API; menonaktifkannya segera jika bocor
Mengaktifkan batas frekuensi untuk nomor yang sama dan IP yang sama Pusat Keamanan Memblokir kiriman berulang ke satu nomor atau dari satu IP
Mengirim end_user_ip pada permintaan kirim Pengiriman OTP Membuat batas berdasarkan IP berlaku
Mengatur nilai peringatan dan kuota harian / bulanan Pusat Keamanan Memberi peringatan atau menjeda otomatis saat volume tidak wajar
Mengatur daftar putih atau daftar hitam negara / wilayah Pusat Keamanan Menghindari pengiriman ke wilayah di luar bisnis
Menjeda saluran SMS dengan satu klik saat darurat Pusat Keamanan Menghentikan kerugian dengan cepat saat sedang disalahgunakan

Agar menerima notifikasi saat peringatan atau kuota tercapai, konfigurasikan dulu peristiwa callback di Webhook.

Perlindungan sisi bisnis

Batas platform tidak menggantikan perlindungan API «Dapatkan kode verifikasi» milik Anda. Selesaikan pemeriksaan ini sebelum memanggil EngageLab:

  • Lakukan verifikasi manusia (CAPTCHA gambar, Turnstile, atau reCAPTCHA) sebelum mengirim kode, dan validasi hasilnya di server.
  • Tetapkan interval kirim ulang untuk nomor yang sama (misalnya 60 detik) dan tampilkan hitungan mundur di frontend.
  • Batasi permintaan per akun, perangkat, dan IP per menit, jam, dan hari kalender. Hitung juga permintaan yang gagal.
  • «Dapatkan kode verifikasi» harus menyertakan sesi masuk, atau sesi yang valid pada alur tanpa masuk. Jangan menampilkan endpoint kirim publik tanpa konteks.
  • Batasi percobaan untuk kode yang sama dan batalkan segera setelah verifikasi berhasil. EngageLab OTP tidak mendukung verifikasi ulang kode yang sudah berhasil diverifikasi.

Perlakukan kode error sebagai sinyal penyalahgunaan

Pengiriman OTP dapat mengembalikan error berikut pada validasi sebelum kirim. Jika muncul, perlambat percobaan ulang dan periksa apakah ada permintaan terpusat:

Kode error Status HTTP Arti
3004 400 Batas frekuensi terlampaui untuk template dan penerima yang sama; jendela mengikuti konfigurasi template
6001 429 Frekuensi pengiriman untuk nomor yang sama terlampaui; jendela dapat berupa menit, jam, atau hari kalender
6002 429 Frekuensi pengiriman untuk IP pengguna akhir yang sama terlampaui; hanya diperiksa jika end_user_ip dikirim
6003 429 Volume pengiriman harian atau bulanan global aplikasi mencapai batas
6007 403 Layanan pengiriman kode SMS dijeda, untuk semua negara / wilayah atau yang saat ini

Jangan langsung mencoba ulang beruntun saat menerima HTTP 429. Jika berlanjut, periksa dulu di Pusat Keamanan apakah kuota volume atau penghentian darurat aktif, lalu hubungi dukungan.

Yang dilakukan jika secret bocor

  1. Di konsol OTP, nonaktifkan atau rotasikan API Key.
  2. Di Pusat Keamanan, gunakan penghentian darurat untuk menjeda pengiriman SMS.
  3. Periksa pengiriman tidak wajar di Riwayat dan callback.
  4. Perketat daftar putih IP API Key dan periksa apakah kuota harian / bulanan wajar.
  5. Lanjutkan pengiriman hanya setelah risiko hilang.

Daftar periksa sebelum rilis

  • API hanya dipanggil dari server. dev_secret tidak ada di frontend, aplikasi, atau repositori publik.
  • API Key produksi memiliki daftar putih IP keluar server.
  • Batas frekuensi nomor di Pusat Keamanan sudah aktif; permintaan kirim menyertakan end_user_ip jika Anda memerlukan batas IP.
  • Kuota harian / bulanan sudah diatur, dan callback terkait volume sudah dikonfigurasi.
  • API «Dapatkan kode verifikasi» menjalankan CAPTCHA dan batas bisnis sebelum memanggil EngageLab.
  • Urutan penanganan saat disalahgunakan sudah jelas: nonaktifkan Key → penghentian darurat → tinjau catatan pengiriman.
Icon Solid Transparent White Qiyu
Hubungi Sales