Anti-abuso e sicurezza dei codici

In anteprima

Il codice è un segreto. Lo trattiamo come tale.

Configurazione in:
Cursor

Un codice monouso è valido solo quanto il modo in cui viene generato, archiviato e limitato. Bird Verify genera i codici con una fonte crittografica, archivia solo un hash, confronta a tempo costante e limita sia gli invii che i tentativi — così un log esposto o un attacco brute-force non portano da nessuna parte. Il punteggio antifrode sarà il prossimo passo 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 } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Sicurezza attiva di default, non un componente aggiuntivo.

Ogni verifica sulla API di Bird Verify include le stesse protezioni: il codice viene generato lato server, mai restituito, e archiviato solo come hash; i controlli avvengono a tempo costante e con un budget limitato di tentativi; gli invii sono limitati per destinatario e per workspace. Non devi attivare nulla né configurare manualmente — è così che funziona l'API, che tu la usi per l<twofa>autenticazione a due fattori</twofa> o per laccesso senza password.

Cinque protezioni su ogni verifica.

Nessun passaggio di configurazione, nessun add-on.

  1. 01

    Generazione crittografica.

    I codici vengono generati da una fonte casuale crittografica, distribuiti uniformemente nello spazio dei codici, non da un contatore o timestamp prevedibile.

  2. 02

    Hash a riposo, mai in chiaro in uscita.

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

  3. 03

    Confronto a tempo costante.

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

  4. 04

    Blocco dei tentativi.

    Ogni sessione ha un numero limitato di controlli (5 di default). Una volta esauriti, la sessione fallisce, impedendo tentativi infiniti.

  5. 05

    Limiti di invio e quote.

    Un limite di invio per destinatario, un cooldown per il reinvio e una quota giornaliera per workspace delimitano la spesa e la superficie d'abuso, ciascuno con un 429 e Retry-After.

I tentativi si esauriscono prima dei tuoi utenti.

Un codice errato restituisce un risultato con i tentativi rimanenti, e la sessione fallisce una volta esaurito il budget — così un attacco brute-force si scontra con un muro, non con una porta aperta.

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

// wrong code, attempts left → { result: "invalid", attempts_remaining: 2 }
// budget spent, session done → { result: "failed", attempts_remaining: null }
Prossimamente

Prossimamente: segnali antifrode e protezione contro l'SMS pumping.

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

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

Protezione contro SMS pumping e AIT. Limiti di invio per paese e per prefisso, più un tetto di spesa per workspace, bloccano l'attacco di traffico artificialmente gonfiato che indirizza gli OTP verso numeri premium per la condivisione dei ricavi con l'operatore.

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

FAQ sulla sicurezza della verifica

Dove viene archiviato il codice monouso?+
Solo come hash HMAC-SHA256. Bird genera il codice con una fonte casuale crittografica, lo invia e conserva l'hash per il confronto — il testo in chiaro non viene mai restituito dall'API né scritto nei log.
Come impedite a qualcuno di forzare il codice con un attacco brute-force?+
Ogni sessione ha un numero limitato di controlli (5 di default), e ciascuno viene confrontato a tempo costante così il timing non rivela nulla. Una volta esaurito il budget, la sessione fallisce e l'attaccante non può continuare a indovinare.
E per quanto riguarda l'SMS pumping e il traffico artificialmente gonfiato?+
I limiti di invio per destinatario e una quota giornaliera per workspace delimitano la spesa oggi. Punteggio antifrode dedicato e protezione contro l'SMS pumping sono in arrivo, basati sullo storico per invio che Verify già registra.
Queste protezioni hanno un costo aggiuntivo?+
No. Generazione crittografica, archiviazione con hash, controlli a tempo costante, blocco dei tentativi e limiti di invio sono il comportamento standard di ogni verifica — non c'è nessun livello di sicurezza da acquistare.
Da chi vedono arrivare il codice i miei utenti?+
Authifly, il brand di verifica di Bird. È l'identità su ogni codice ricevuto dai tuoi utenti: le email arrivano da otp@verify.authifly.com o dal tuo dominio verificato, mentre SMS e WhatsApp sono brandizzati Authifly. authifly.com è una pagina pubblica che rassicura i destinatari sul fatto che Authifly invia codici monouso legittimi per conto di un'azienda. Bird è la piattaforma su cui sviluppi; Authifly è ciò che vede il destinatario.

Codici generati, archiviati e con limiti di frequenza come dovrebbe essere.

La sicurezza è integrata in Bird Verify, non venduta a parte: i canali, il codice e i limiti sono gli stessi due endpoint.

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor