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 nella frequenza. Bird Verify genera i codici con una fonte crittografica, archivia solo un hash, confronta in tempo costante e limita sia gli invii che i tentativi di indovinare, così un log trapelato o un attacco brute-force non portano 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 } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Sicurezza attiva di default, non un componente aggiuntivo.

Ogni verifica sull<hub>API di Bird Verify</hub> include le stesse protezioni: il codice viene generato lato server, mai restituito, e archiviato solo come hash; i controlli vengono eseguiti in tempo costante e con un budget limitato di tentativi; gli invii sono limitati per destinatario e per workspace. Non dovete attivare nulla né configurare queste funzioni: è il comportamento predefinito dellAPI, sia che la usiate come login a due fattori o come accesso 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.

    Un limite di invio per destinatario e un cooldown per il reinvio 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 singolo invio che Verify registra oggi è la base per un livello antifrode che stiamo sviluppando. Utilizza le stesse chiamate create e check, quindi adottarlo in seguito sarà una modifica di configurazione, non una nuova integrazione.

Segnali di rischio alla creazione. Passate il contesto di dispositivo, IP e richiesta in fase di verifica: i tentativi ad alto rischio ricevono un esito di blocco prima ancora che venga inviato un codice, così non pagate 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.

Costruito su ciò che già esiste. La valutazione del rischio legge lo storico dei tentativi che Verify conserva fin dal primo giorno, e l'esito di blocco fa già parte del modello di stato: il livello antifrode si integra senza modificare la vostra integrazione.

FAQ sulla sicurezza della verifica

Dove viene archiviato il codice monouso?
Solo come hash HMAC-SHA256. Bird genera il codice con una fonte crittografica casuale, 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 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 in tempo costante, blocco dopo troppi tentativi e limiti di invio sono il comportamento predefinito di ogni verifica: non esiste un livello di sicurezza aggiuntivo 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