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.
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;
Il tuo account
Conferma la tua identità.
Inserisci il codice inviato a
+1 ••• ••• 4567Codice di verifica di esempio
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.
- 01
Generazione crittografica.
I codici sono estratti da una sorgente crittografica casuale, uniformi nello spazio dei codici, non un contatore o un timestamp prevedibile.
- 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.
- 03
Confronto in tempo costante.
I codici inviati vengono confrontati in tempo costante, così un attaccante non ricava nulla dalla durata di un controllo.
- 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.
- 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.
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: 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.
Il resto della piattaforma Verify
Un'API, un unico set di chiavi. Esplora le altre funzionalità.
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.
Registro di audit
Produzione- Workspace
- Produzione
- Risorsa
- Agente di invio
- Accesso in letturaLettura e scrittura