Bloquez les attaques par force brute et les abus automatisés d’OTP.
Protégez vos flux de vérification à l’inscription, à la connexion et à l’authentification renforcée contre les tentatives de deviner les codes par force brute, les boucles de renvoi automatisées et le pumping SMS, sans ajouter de friction pour les utilisateurs légitimes. Bird Verify stocke les codes de vérification sous forme hachée, applique des limites de tentatives et des délais d’expiration par session, plafonne les envois répétés par destinataire et vous permet de bloquer les pays que vous ne desservez pas avant l’envoi d’un message.
verify.ts
200 · pendingimport { 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;
Votre compte
Confirmez votre identité.
Saisissez le code envoyé à
+1 ••• ••• 4567
verify.ts
200 · pendingimport { 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;
Votre compte
Confirmez votre identité.
Saisissez le code envoyé à
+1 ••• ••• 4567
verify.ts
200 · pendingimport { 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;
Votre compte
Confirmez votre identité.
Saisissez le code envoyé à
+1 ••• ••• 4567
Sécurisez vos flux OTP sans développer vos propres limiteurs de débit.
Sécuriser la vérification en interne implique de maintenir des compteurs Redis pour les délais entre renvois, de suivre les tentatives échouées par session, de hacher les codes avant leur écriture en base de données et de filtrer le trafic vers les pays où vous n’opérez pas. Avec l’API Bird Verify, ces garde-fous s’appliquent automatiquement à chaque session de vérification. Les codes de vérification en clair n’apparaissent ni dans les réponses de l’API ni dans les journaux applicatifs, les endpoints de contrôle imposent un nombre limité de tentatives et une limitation du débit par minute, et les paramètres de l’espace de travail vous permettent d’ajuster les délais d’expiration et les destinations autorisées pour la connexion à deux facteurs comme pour la connexion sans mot de passe.
Comment Bird protège les sessions de vérification contre les abus.
Des garde-fous par défaut et des contrôles au niveau de l’espace de travail qui bloquent les tentatives de deviner les codes, les renvois en masse et le trafic international indésirable.
- 01
Générez des codes de vérification imprévisibles.
Générez par défaut des codes de vérification numériques à 6 chiffres (ou de 4 à 8 chiffres par requête) à partir d’une source aléatoire cryptographique couvrant tout l’espace des codes, afin que les attaquants ne puissent pas les prédire à partir d’horodatages ou de compteurs séquentiels.
- 02
Gardez les codes en clair hors des journaux et des réponses.
Stockez les codes de vérification sous forme de hachages HMAC-SHA256 et excluez le texte en clair des réponses de l’API, des payloads de webhook et des journaux du tableau de bord, afin qu’une fuite des journaux applicatifs ou des vues du support ne puisse pas exposer de codes actifs.
- 03
Vérifiez les codes soumis en temps constant.
Évaluez les chiffres saisis par l’utilisateur en temps constant pour toutes les tentatives actives de la session, afin que la latence de réponse ne révèle aux attaquants aucune information sur le nombre de chiffres corrects.
- 04
Bloquez les attaques par force brute et faites expirer les sessions inactives.
Limitez par défaut chaque session à 5 tentatives de contrôle et à un délai d’expiration de 10 minutes, ou ajustez ces deux limites dans les paramètres de votre espace de travail. Une fois les tentatives épuisées ou le délai écoulé, la session se ferme et les contrôles suivants sont rejetés, avec en complément une limitation du débit des contrôles par minute.
- 05
Plafonnez les envois répétés et bloquez les pays inutilisés.
Appliquez un délai de 60 secondes entre deux renvois (configurable jusqu’à une heure) et un plafond glissant de 5 envois par destinataire et par heure, afin que les bots ne puissent ni inonder le téléphone d’un utilisateur ni épuiser votre solde. Désactivez dans le tableau de bord les pays que vous ne desservez pas pour bloquer le pumping SMS vers ces destinations avant l’envoi d’un message.
Guidez les vrais utilisateurs en cas de faute de frappe tout en bloquant les attaques par force brute.
Lorsqu’un utilisateur se trompe de chiffre, la réponse de contrôle indique à votre application le nombre de tentatives restantes, pour que vous puissiez l’inviter à réessayer. Une fois toutes les tentatives de la session épuisées, la vérification se ferme automatiquement et bloque toute nouvelle saisie jusqu’au démarrage d’une nouvelle session.
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 : signaux de risque automatisés et plafonds de dépenses.
En complément des contrôles par pays et des plafonds d’envoi par destinataire déjà disponibles, nous intégrons une couche antifraude directement dans le cycle de vie de la vérification. Comme elle s’appuie sur les mêmes endpoints d’envoi et de contrôle, votre équipe pourra activer des règles de risque par configuration, sans modifier le code applicatif.
Signaux de risque sur les requêtes de vérification. Transmettez le contexte de l’appareil, de l’IP et de la requête au démarrage d’une vérification, afin de bloquer les tentatives à haut risque avant l’envoi d’un message et la facturation par l’opérateur.
Plafonds de vélocité par préfixe et plafonds de dépenses. Combinez des limites d’envoi par pays et par préfixe avec des plafonds de vérification au niveau de l’espace de travail pour stopper les attaques par trafic artificiellement gonflé (AIT) ciblant les plages de numéros surtaxés avant qu’elles n’épuisent votre budget.
Décisions fondées sur l’historique de distribution. Évaluez les nouvelles requêtes de vérification à partir de l’historique des tentatives et des conversions que Bird Verify enregistre sur tous les canaux, et remontez les résultats bloqués directement via votre gestionnaire de statut existant.
Développez sur la plateforme Verify
Distribution multicanal, routage de repli et flux d’authentification reposant sur la même API.
Passez à l'échelle sans perdre le contrôle.
Separate production and sandbox traffic into dedicated workspaces, scope API keys to the exact channels each service or agent needs, and track permission changes in the audit log.