Kode adalah rahasia. Kami memperlakukannya demikian.

Kode sekali pakai hanya sebaik cara kode itu dibuat, disimpan, dan dibatasi lajunya. Bird Verify menghasilkan kode dari sumber kriptografis, menyimpan hanya hash-nya, membandingkan dalam waktu konstan, dan membatasi pengiriman maupun percobaan tebakan, sehingga log yang bocor atau serangan brute-force tidak memberi celah bagi penyerang. Penilaian risiko penipuan akan dibangun di atas dasar ini berikutnya.

verify.ts
200 · pending
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({
  apiKey: process.env.BIRD_API_KEY!,
});

// Send the code, then check it by recipient.
await bird.verify.verifications.create({
  to: { phone_number: "+15551234567" },
}).safe();

const { data, error } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();
if (error) throw error;
Alur verifikasi

Akun Anda

Konfirmasi identitas Anda.

Masukkan kode yang dikirim ke

+1 ••• ••• 4567

Contoh kode verifikasi

482691
Kode terverifikasi
Kirim kode. Konfirmasi penerima.

Keamanan yang aktif secara default, bukan tambahan.

Setiap verifikasi pada Bird Verify API membawa perlindungan yang sama: kode dibuat di sisi server, tidak pernah dikembalikan, dan disimpan hanya sebagai hash; pemeriksaan berjalan dalam waktu konstan dengan batas percobaan yang tetap; dan pengiriman dibatasi per penerima dan per workspace. Anda tidak perlu mengaktifkan atau menyambungkan ini: begitulah cara API bekerja, baik Anda menggunakannya sebagai login dua faktor maupun login tanpa kata sandi.

Lima perlindungan pada setiap verifikasi.

Tanpa langkah pengaturan, tanpa add-on SKU.

  1. 01

    Pembuatan kriptografis.

    Kode diambil dari sumber acak kriptografis, tersebar merata di seluruh ruang kode, bukan dari penghitung atau timestamp yang dapat diprediksi.

  2. 02

    Di-hash saat disimpan, tidak pernah dikirim keluar.

    Hanya HMAC-SHA256 dari setiap kode yang disimpan; plaintext tidak pernah dikembalikan oleh API dan tidak pernah ditulis ke stack Anda maupun log kami.

  3. 03

    Perbandingan waktu konstan.

    Kode yang dikirimkan dibandingkan dalam waktu konstan, sehingga penyerang tidak mendapat informasi dari durasi pemeriksaan.

  4. 04

    Penguncian percobaan.

    Setiap sesi memiliki batas jumlah pemeriksaan (5 secara default). Setelah habis, sesi gagal, sehingga tebakan tidak bisa berjalan tanpa batas.

  5. 05

    Batas pengiriman.

    Batas pengiriman per penerima dan jeda pengiriman ulang membatasi biaya dan permukaan penyalahgunaan, masing-masing mengembalikan 429 dengan Retry-After.

Percobaan tebakan habis sebelum pengguna Anda kehabisan kesabaran.

Kode yang salah dikembalikan bersama sisa percobaan, dan sesi gagal setelah kuota habis, sehingga serangan brute-force menabrak tembok jauh sebelum menemukan kode.

lockout.ts
200
const { data, error } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: guess,
}).safe();
if (error) throw error;

// wrong code, attempts left → { success: false, reason: "incorrect_code", attempts_remaining: 2 }
// budget spent, session done → { success: false, reason: "attempts_exhausted", attempts_remaining: null }
Segera hadir

Segera hadir: sinyal penipuan dan perlindungan SMS-pumping.

Riwayat per-pengiriman yang dicatat Verify saat ini adalah fondasi untuk lapisan anti-penipuan yang sedang kami bangun. Lapisan ini menggunakan panggilan create dan check yang sama, sehingga mengadopsinya nanti hanya perubahan konfigurasi, bukan integrasi ulang.

Sinyal risiko pada create. Kirim konteks perangkat, IP, dan permintaan pada verifikasi, dan percobaan berisiko tinggi mendapat hasil blocked sebelum kode dikirim, sehingga Anda tidak membayar untuk mengirim pesan ke penyerang.

Perlindungan SMS-pumping dan AIT. Batas pengiriman per negara dan per prefiks ditambah batas pengeluaran per workspace menghentikan serangan artificially-inflated-traffic yang mengarahkan OTP ke rentang nomor premium demi bagi hasil operator.

Dibangun di atas yang sudah ada. Keputusan risiko membaca riwayat percobaan yang disimpan Verify sejak hari pertama, dan hasil blocked sudah menjadi bagian dari model status, sehingga lapisan anti-penipuan hadir tanpa mengubah integrasi Anda.

Skalakan tanpa
kehilangan kendali.

Atur tim dalam workspace, kontrol akses API, dan lacak perubahan melalui log audit.

BirdHarborOrganisasi
WorkspaceProduksiSandbox

Agen pengiriman

Kunci API · Tim operasional pelanggan
Aktif
IzinAkses
EmailBaca & tulis
SMSBaca & tulis
ALAlex Lee AdminIzin diperbarui

Log audit

Produksi
Workspace
Produksi
Sumber daya
Agen pengiriman
WhatsApp
Akses bacaBaca & tulis
Berhasil

Mulai dengan Verify.
Bangun lintas kanal dengan Bird.

Ide Anda berikutnya. Siap terhubung.