Mencegah penyalahgunaan API SMS
Jika API pengiriman SMS dipanggil tanpa otorisasi, atau API Key bocor lalu digunakan orang lain, SMS dapat terkirim dalam jumlah besar, saldo cepat habis, dan reputasi saluran dapat turun. EngageLab SMS dapat membatasi frekuensi, volume, serta cakupan negara / wilayah di sisi pengiriman, tetapi tidak menggantikan perlindungan secret dan titik masuk pengiriman milik Anda.
Artikel ini menjelaskan cara menggabungkan kemampuan platform dengan perlindungan sisi bisnis untuk menurunkan risiko penyalahgunaan API.
Arsitektur yang benar
API EngageLab SMS hanya boleh dipanggil dari server sistem bisnis Anda. Jangan memanggilnya langsung dari browser, klien App, atau mini program.
Server sistem bisnis → API EngageLab SMS (dengan API Key; untuk pengiriman dari halaman, kirim juga end_user_ip)
- Simpan
dev_keydandev_secrethanya di server. Jangan menempatkannya di kode frontend, paket aplikasi, repositori publik, atau variabel CI dalam teks biasa. - Jangan mengekspos URL API SMS dan secret pada endpoint yang dapat dipanggil langsung oleh pengguna akhir.
- 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 SMS dengan Key |
end_user_ip pada permintaan kirim |
IP pengguna akhir | IP pengguna yang sama yang berulang memicu pengiriman dalam waktu singkat |
Setelah mengaktifkan batas «berdasarkan alamat IP» di Pusat Keamanan, Anda harus mengirim end_user_ip pada permintaan Mengirim SMS agar batas berlaku. Kirim IP publik perangkat pengguna, bukan IP server Anda. Saat server mengirim SMS pemasaran atau notifikasi secara massal tanpa IP pengguna akhir, batas berdasarkan IP tidak berlaku untuk permintaan itu. Lebih andalkan daftar putih API Key dan kuota volume pengiriman.
Perlindungan sisi platform
Lengkapi konfigurasi berikut di konsol SMS untuk membatasi kerugian jika API 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 yang dipicu halaman |
Mengirim SMS | 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 |
| Mengonfigurasi peringatan saldo tidak mencukupi | Pengaturan Peringatan | Menemukan biaya tidak wajar lebih awal |
Agar menerima notifikasi saat peringatan atau kuota tercapai, konfigurasikan dulu peristiwa callback di Webhook.
Perkuat perlindungan menurut jenis template
Cara jenis template disalahgunakan berbeda, sehingga fokus perlindungannya juga berbeda.
Template notifikasi / pemasaran
SMS jenis ini biasanya dikirim massal dari server berdasarkan peristiwa bisnis atau rencana operasional. Risiko utamanya adalah Key yang bocor dipakai orang lain untuk kirim massal.
- Lingkungan produksi harus mengonfigurasi daftar putih IP API Key.
- Tetapkan kuota pengiriman harian / bulanan yang wajar untuk aplikasi, agar saldo tidak habis dalam satu kali.
- Picu tugas terjadwal atau massal hanya di lingkungan server yang terkendali. Jangan membuka kemampuan kirim sebagai endpoint HTTP tanpa autentikasi.
Template kode verifikasi
Jika Anda memakai template jenis kode verifikasi dan pengiriman dipicu tombol «Dapatkan SMS» di situs atau App, lindungi juga API bisnis Anda sendiri:
- Lakukan verifikasi manusia (CAPTCHA gambar, Turnstile, atau reCAPTCHA) sebelum mengirim, 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 SMS» harus menyertakan sesi masuk, atau sesi yang valid pada alur tanpa masuk. Jangan menampilkan endpoint kirim publik tanpa konteks.
Perlakukan kode error sebagai sinyal anomali
Mengirim SMS dapat mengembalikan error terkait frekuensi berikut saat validasi atau pengiriman. Jika muncul, perlambat percobaan ulang dan periksa apakah ada pemanggilan tidak sah atau permintaan terpusat:
| Kode error | Arti |
|---|---|
3004 |
Batas frekuensi terlampaui; template dan penerima yang sama tidak dapat dikirim lagi dalam jendela batas |
10006 |
Batas frekuensi terlampaui |
Jika volume pengiriman sudah mencapai kuota Pusat Keamanan, atau Anda sudah menjalankan penghentian darurat, permintaan berikutnya akan ditolak. Konfirmasi dulu status di Pusat Keamanan. Jangan langsung mencoba ulang beruntun.
Yang dilakukan jika secret bocor
- Di konsol SMS, nonaktifkan atau rotasikan API Key.
- Di Pusat Keamanan, gunakan penghentian darurat untuk menjeda pengiriman SMS.
- Periksa pengiriman tidak wajar di Detail pesan dan callback.
- Periksa Pengaturan Peringatan apakah peringatan saldo sudah terpicu, lalu bandingkan konsumsi terkini.
- Perketat daftar putih IP API Key dan periksa apakah kuota harian / bulanan wajar.
- Lanjutkan pengiriman hanya setelah risiko hilang.
Daftar periksa sebelum rilis
- API hanya dipanggil dari server.
dev_secrettidak ada di frontend, aplikasi, repositori publik, atau variabel CI dalam teks biasa. - API Key produksi memiliki daftar putih IP keluar server.
- Batas frekuensi nomor di Pusat Keamanan sudah aktif; pengiriman yang dipicu halaman menyertakan
end_user_ip. - Kuota harian / bulanan sudah diatur, serta callback terkait volume dan peringatan saldo.
- Pengiriman kode verifikasi menjalankan CAPTCHA dan batas bisnis sebelum memanggil EngageLab.
- Urutan penanganan saat disalahgunakan sudah jelas: nonaktifkan Key → penghentian darurat → tinjau catatan pengiriman.










