Le code est un secret. Nous le traitons comme tel.

Un code à usage unique ne vaut que par la façon dont il est généré, stocké et soumis à une limitation du débit. Bird Verify génère les codes à partir d'une source cryptographique, ne stocke qu'un hash, compare en temps constant et plafonne les envois comme les tentatives : un journal qui fuite ou une boucle de force brute ne mène nulle part. L'évaluation de la fraude vient compléter cette 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;
Flux de vérification

Votre compte

Confirmez votre identité.

Saisissez le code envoyé à

+1 ••• ••• 4567

Exemple de code de vérification

482691
Code vérifié
Envoyez un code. Confirmez le destinataire.

Une sécurité active par défaut, pas en option.

Chaque vérification sur l<hub>Bird Verify API</hub> bénéficie des mêmes protections : le code est généré côté serveur, jamais renvoyé, et stocké uniquement sous forme de hash ; les contrôles sexécutent en temps constant dans un budget de tentatives limité ; les envois sont plafonnés par destinataire et par espace de travail. Vous n'avez rien à activer ni à câbler : c'est le comportement natif de l'API, que vous l'utilisiez pour une authentification à deux facteurs ou une connexion sans mot de passe.

Cinq protections sur chaque vérification.

Aucune étape de configuration, aucune option payante.

  1. 01

    Génération cryptographique.

    Les codes sont tirés d'une source aléatoire cryptographique, uniformément répartis dans l'espace de codes, et non d'un compteur ou d'un horodatage prévisible.

  2. 02

    Hashé au repos, jamais exposé en clair.

    Seul un HMAC-SHA256 de chaque code est stocké ; le texte en clair n'est jamais renvoyé par l'API et jamais écrit dans votre pile ou nos journaux.

  3. 03

    Comparaison en temps constant.

    Les codes soumis sont comparés en temps constant : un attaquant ne tire aucune information de la durée d'une vérification.

  4. 04

    Verrouillage après tentatives.

    Chaque session dispose d'un nombre limité de vérifications (5 par défaut). Une fois épuisées, la session échoue : impossible de deviner indéfiniment.

  5. 05

    Plafonds d'envoi.

    Un plafond d'envoi par destinataire et un délai de réenvoi limitent la dépense et la surface d'abus, chacun renvoyant un 429 avec Retry-After.

Les tentatives s'épuisent avant vos utilisateurs.

Un code erroné renvoie le nombre de tentatives restantes, et la session échoue une fois le budget épuisé : une boucle de force brute se heurte à un mur bien avant de trouver le code.

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 }
Prochainement

Prochainement : signaux de fraude et protection contre le pompage SMS.

L'historique par envoi que Verify enregistre aujourd'hui constitue le socle d'une couche anti-fraude en cours de développement. Elle s'appuie sur les mêmes appels create et check : l'adopter plus tard sera un changement de configuration, pas une réintégration.

Signaux de risque à la création. Transmettez le contexte appareil, IP et requête lors d'une vérification : les tentatives à haut risque reçoivent un résultat bloqué avant même l'envoi d'un code, pour ne pas payer l'envoi d'un message à un attaquant.

Protection contre le pompage SMS et le trafic artificiellement gonflé. Des plafonds d'envoi par pays et par préfixe, plus un plafond de dépense par espace de travail, neutralisent l'attaque qui redirige les OTP vers des plages de numéros surtaxés pour un partage de revenus avec l'opérateur.

Construit sur l'existant. L'évaluation du risque exploite l'historique de tentatives que Verify conserve dès le premier jour, et le résultat bloqué fait déjà partie du modèle de statut : la couche anti-fraude s'intègre sans modifier votre intégration.

Évoluez sans
perdre le contrôle.

Organisez vos équipes en espaces de travail, contrôlez l'accès à l'API et tracez les modifications via les journaux d'audit.

BirdHarborOrganisation
Espaces de travailProductionBac à sable

Agent d’envoi

Clé API · Équipe Opérations clients
Actif
AutorisationsAccès
EmailLecture et écriture
SMSLecture et écriture
ALAlex Lee AdministrateurAutorisations mises à jour

Journal d'audit

Production
Espace de travail
Production
Ressource
Agent d’envoi
WhatsApp
Accès en lectureLecture et écriture
Réussi

Commencez avec Verify.
Développez sur tous les canaux avec Bird.

Votre prochaine idée. Prête à se connecter.