Anti-abus et sécurité des codes

En avant-première

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

Intégration en :
Cursor

Un code à usage unique n'est fiable que s'il est correctement généré, stocké et soumis à des limites de 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 exposé ou une attaque par force brute ne mène nulle part. L'évaluation de la fraude viendra 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 } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Une sécurité active par défaut, pas un module complémentaire.

Chaque vérification sur l<hub>API Bird Verify</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 vérifications sexécutent en temps constant avec un nombre limité de tentatives ; et les envois sont plafonnés par destinataire et par espace de travail. Vous n'avez rien à activer ni à configurer — c'est le comportement natif de l'API, que vous l'utilisiez pour l<twofa>authentification à deux facteurs</twofa> ou la <pw>connexion sans mot de passe</pw>.

Cinq protections sur chaque vérification.

Aucune étape de configuration, aucun module complémentaire.

  1. 01

    Génération cryptographique.

    Les codes sont tirés d'une source aléatoire cryptographique, uniformément répartis sur l'espace de codes, sans compteur ni horodatage prévisible.

  2. 02

    Hashé au repos, jamais exposé en sortie.

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

  3. 03

    Comparaison en temps constant.

    Les codes soumis sont comparés en temps constant, de sorte qu'un attaquant n'apprend rien de la durée de la 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 et quotas.

    Un plafond d'envoi par destinataire, un délai de renvoi et un quota quotidien par espace de travail limitent les dépenses et la surface d'abus, chacun renvoyant un 429 avec Retry-After.

Les tentatives s'épuisent avant vos utilisateurs.

Un code erroné renvoie un résultat avec le nombre de tentatives restantes, et la session échoue une fois le budget épuisé — une boucle de force brute se heurte à un mur, pas à une porte ouverte.

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

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

L'historique par envoi que Verify enregistre aujourd'hui pose les bases d'une couche anti-fraude que nous développons actuellement. 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, et les tentatives à haut risque reçoivent un résultat bloqué avant même l'envoi d'un code — vous ne payez pas pour envoyer un message à un attaquant.

Protection contre le SMS pumping et l'AIT. Des plafonds d'envoi par pays et par préfixe, combinés à un plafond de dépenses par espace de travail, neutralisent les attaques de trafic artificiellement gonflé qui dirigent les OTP vers des plages de numéros surtaxés pour le partage de revenus opérateur.

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

FAQ sur la sécurité des vérifications

Où le code à usage unique est-il stocké ?+
Uniquement sous forme de hash HMAC-SHA256. Bird génère le code à partir d'une source aléatoire cryptographique, l'envoie et conserve le hash pour la comparaison — le texte en clair n'est jamais renvoyé par l'API ni écrit dans les journaux.
Comment empêchez-vous une attaque par force brute sur le code ?+
Chaque session dispose d'un nombre limité de vérifications (5 par défaut), et chacune est comparée en temps constant pour qu'aucune information ne filtre via le temps de réponse. Une fois le budget épuisé, la session échoue — un attaquant ne peut pas continuer à deviner.
Qu'en est-il du SMS pumping et du trafic artificiellement gonflé ?+
Des plafonds d'envoi par destinataire et un quota quotidien par espace de travail limitent les dépenses dès aujourd'hui. L'évaluation dédiée de la fraude et la protection contre le SMS pumping arrivent prochainement, s'appuyant sur l'historique par envoi que Verify enregistre déjà.
Ces protections coûtent-elles un supplément ?+
Non. Génération cryptographique, stockage hashé, comparaison en temps constant, verrouillage après tentatives et plafonds d'envoi sont le comportement natif de chaque vérification — il n'y a pas de niveau de sécurité à acheter.
De qui mes utilisateurs voient-ils le code ?+
Authifly, la marque de vérification de Bird. C'est l'identité associée à chaque code que vos utilisateurs reçoivent : l'e-mail provient de otp@verify.authifly.com ou de votre propre domaine vérifié, et les SMS et WhatsApp portent la marque Authifly. authifly.com est une page publique qui assure aux destinataires qu'Authifly envoie des codes à usage unique légitimes pour le compte d'une entreprise. Bird est la plateforme sur laquelle vous développez ; Authifly est ce que le destinataire voit.

Des codes générés, stockés et soumis à des limites de débit comme il se doit.

La sécurité est intégrée à Bird Verify, pas vendue en supplément : les canaux, le code et les limites reposent sur les deux mêmes endpoints.

Commencez avec un seul canal.
Ajoutez les autres quand vous êtes prêt.

Une clé API de test est disponible immédiatement. L'accès production se débloque dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Vous utilisez Claude Code, Cursor ou Codex ? Copiez un prompt de configuration et votre agent installe la CLI Bird et les compétences pour vous. Choisissez le vôtre :

Cursor