Bahaya Tersembunyi SMS Traffic Pumping
Kenali cara kerja SMS traffic pumping, dampak biaya tersembunyinya, sinyal serangan, dan cara inbound WhatsApp authentication mengurangi risiko.

Apa itu SMS traffic pumping (AIT)?
SMS traffic pumping, atau Artificially Inflated Traffic (AIT), adalah bentuk International Revenue Share Fraud (IRSF). Penyerang mengeksploitasi form login, register, atau reset password untuk memicu ribuan permintaan SMS OTP ke rentang nomor premium atau operator telekomunikasi tertentu.
Dalam skema ini, penyerang dan oknum perantara membagi keuntungan dari tarif terminasi SMS internasional yang mahal, sementara bisnis Anda menanggung seluruh tagihan pengiriman SMS yang tidak pernah dibuka oleh pengguna asli.
Dampak nyata: biaya meledak dan konversi anjlok
Lonjakan Biaya Tidak Terkendali
Satu serangan bot dalam beberapa jam dapat mengirim puluhan ribu SMS ke rute negara mahal, memicu tagihan besar tanpa ada penambahan user aktif.
Metrik Konversi Rusak
Conversion rate verifikasi turun drastis karena OTP dikirim ke nomor bot yang tidak pernah menyelesaikan input token di aplikasi.
Reputasi Domain dan Sender ID Terganggu
Volume SMS keluar yang tidak wajar dapat memicu throttling, flag spam oleh agregator, hingga pemblokiran rute pengiriman SMS legal Anda.
Beban Server & Database
Spam request membebani thread API, menghabiskan pool koneksi database, dan memenuhi tabel OTP dengan token kedaluwarsa.
Sinyal deteksi dini serangan SMS pumping
| Indikator | Ciri Anomali | Tindakan Cepat |
|---|---|---|
| Prefix Negara Baru | Lonjakan permintaan SMS ke kode negara di luar target pasar aplikasi. | Batasi geo permissions dan blokir rute internasional non-operasional. |
| Rasio Penyelesaian OTP Drop | Request OTP tinggi tetapi verifikasi token yang tervalidasi mendekati nol. | Terapkan rate limit ketat per IP, device fingerprint, dan CAPTCHA. |
| Pola Nomor Berurutan | Permintaan OTP menuju deret nomor ponsel dengan rentang digit berurutan. | Terapkan cooldown eksponensial per subnet dan prefix nomor tujuan. |
Mengapa Inbound WhatsApp menghentikan akar masalah SMS pumping?
SMS OTP rentan karena arsitekturnya bersifat outbound push: siapa pun yang menembak form web Anda langsung memaksa server mengirim SMS berbayar.
LessOTP membalik model ini menjadi inbound pull verification:
- Tidak ada SMS outbound berbayar: Verifikasi dimulai dengan pesan WhatsApp masuk /START kode dari ponsel pengguna.
- Penyerang menanggung biaya: Bot tidak bisa mengeksploitasi saldo platform Anda karena pengirim pesan WhatsApp adalah akun pengguna akhir.
- Billing hanya saat sukses: Saldo LessOTP dipotong per verifikasi valid di production, bukan per request kode atau pesan pending.
Uji flow inbound di environment staging
Anda dapat memvalidasi arsitektur inbound sebelum beralih dari SMS. Buat App staging, gunakan staging API key, lalu panggil endpoint request berikut:
curl -X POST https://lessotp.com/api/v1/staging/auth/request \
-H "Authorization: Bearer YOUR_STAGING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "whatsapp"
}'Response request kode:
{
"status": "success",
"data": {
"request_id": "req_8f7d6c5b4a",
"unique_code": "A7X92",
"channel": "whatsapp",
"wa_link": "https://wa.me/628999999999?text=/START+A7X92",
"expires_in": 180,
"mode": "frictionless"
}
}Gunakan Dashboard → Simulator untuk menyimulasikan inbound tanpa kirim pesan WhatsApp riil. Webhook URL App Anda menerima payload terverifikasi:
{
"event": "verification.success",
"channel": "whatsapp",
"request_id": "req_8f7d6c5b4a",
"phone_number": "6281234567890",
"timestamp": "2026-08-24T10:00:00Z"
}Validasi signature webhook backend
Amankan endpoint webhook Anda dengan memvalidasi header X-Signature dan menggunakan Idempotency-Key agar event replay tidak memicu proses login ganda.
import { createHmac, timingSafeEqual } from "node:crypto";
function verifyLessOTPWebhook(rawBody: string, signature: string, secret: string) {
const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
const received = Buffer.from(signature, "hex");
const expectedBuffer = Buffer.from(expected, "hex");
return received.length === expectedBuffer.length &&
timingSafeEqual(received, expectedBuffer);
}
// Simpan Idempotency-Key dan abaikan delivery yang sudah pernah diproses.Pelajari detail kontrak error code dan webhook retry pada dokumentasi developer LessOTP.
Lindungi anggaran autentikasi dari SMS pumping
Beralih ke inbound WhatsApp authentication. Uji coba langsung di Staging Simulator LessOTP dalam hitungan menit tanpa risiko tagihan SMS bocor.
Buka Staging Simulator