Anti-abus et sécurité des codes
En avant-premièreLe code est un secret. Nous le traitons comme tel.
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
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 : 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é ?+
Comment empêchez-vous une attaque par force brute sur le code ?+
Qu'en est-il du SMS pumping et du trafic artificiellement gonflé ?+
Ces protections coûtent-elles un supplément ?+
De qui mes utilisateurs voient-ils le code ?+
Le reste de la plateforme Verify
Une seule API, un seul jeu de clés. Découvrez les autres fonctionnalités.
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.