Il codice è un segreto. Lo trattiamo come tale.

Un codice monouso vale quanto il modo in cui viene generato, conservato e limitato. Bird Verify genera i codici con una sorgente crittografica, conserva solo un hash, confronta in tempo costante e limita sia gli invii sia i tentativi, così un log trapelato o un attacco brute-force non porta da nessuna parte. Il punteggio antifrode si costruisce su questa base.

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;
Flusso di verifica

Il tuo account

Conferma la tua identità.

Inserisci il codice inviato a

+1 ••• ••• 4567

Codice di verifica di esempio

482691
Codice verificato
Invia un codice. Conferma il destinatario.

Sicurezza attiva di default, non un componente aggiuntivo.

Ogni verifica sulla Bird Verify API include le stesse protezioni: il codice viene generato lato server, non viene mai restituito ed è conservato solo come hash; i controlli avvengono in tempo costante e contro un budget di tentativi limitato; gli invii sono limitati per destinatario e per spazio di lavoro. Non devi attivare nulla né collegare niente: è così che l'API funziona, che tu la usi come login a due fattori o come accesso senza password.

Cinque protezioni su ogni verifica.

Nessun passaggio di configurazione, nessun componente aggiuntivo.

  1. 01

    Generazione crittografica.

    I codici sono estratti da una sorgente crittografica casuale, uniformi nello spazio dei codici, non un contatore o un timestamp prevedibile.

  2. 02

    Hash a riposo, mai in chiaro in uscita.

    Solo un HMAC-SHA256 di ogni codice viene conservato; il testo in chiaro non viene mai restituito dall'API e non viene mai scritto nel tuo stack né nei nostri log.

  3. 03

    Confronto in tempo costante.

    I codici inviati vengono confrontati in tempo costante, così un attaccante non ricava nulla dalla durata di un controllo.

  4. 04

    Blocco per tentativi.

    Ogni sessione ha un numero limitato di controlli (5 di default). Esauriti i tentativi la sessione fallisce, quindi i tentativi a oltranza non sono possibili.

  5. 05

    Limiti di invio.

    Un limite di invio per destinatario e un cooldown tra i reinvii contengono la spesa e la superficie di abuso, ciascuno con un 429 e Retry-After.

I tentativi si esauriscono prima dei tuoi utenti.

Un codice errato restituisce i tentativi rimanenti e la sessione fallisce quando il budget è esaurito, così un attacco brute-force si blocca ben prima di trovare il codice.

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 }
In arrivo

In arrivo: segnali antifrode e protezione contro il pumping SMS.

Lo storico per invio che Verify registra oggi è la base per un livello antifrode che stiamo costruendo. Si appoggia alle stesse chiamate create e check, quindi adottarlo in seguito è una modifica di configurazione, non una re-integrazione.

Segnali di rischio alla creazione. Passa dispositivo, IP e contesto della richiesta in una verifica: i tentativi ad alto rischio ottengono un esito bloccato prima che un codice venga inviato, così non paghi per inviare messaggi a un attaccante.

Protezione contro pumping SMS e AIT. Limiti di invio per paese e per prefisso più un tetto di spesa per spazio di lavoro bloccano l'attacco a traffico artificialmente gonfiato che invia OTP verso numerazioni premium per la condivisione dei ricavi con l'operatore.

Costruito su ciò che c'è già. La valutazione del rischio legge lo storico dei tentativi che Verify conserva dal primo giorno, e l'esito bloccato è già parte del modello di stato, quindi il livello antifrode si integra senza modificare la tua integrazione.

Scala senza
perdere il controllo.

Organizza i team in spazi di lavoro, controlla l'accesso alle API e traccia le modifiche tramite log di audit.

BirdHarborOrganizzazione
WorkspaceProduzioneSandbox

Agente di invio

Chiave API · Team Operazioni clienti
Attivo
AutorizzazioniAccesso
EmailLettura e scrittura
SMSLettura e scrittura
ALAlex Lee AmministratoreAutorizzazioni aggiornate

Registro di audit

Produzione
Workspace
Produzione
Risorsa
Agente di invio
WhatsApp
Accesso in letturaLettura e scrittura
Riuscito

Inizia con Verify.
Costruisci su più canali con Bird.

La tua prossima idea. Pronta a partire.