Stop brute-force raden en geautomatiseerd OTP-misbruik.
Bescherm verificatieflows voor registratie, inloggen en extra verificatie tegen brute-force raden van codes, geautomatiseerde verzendlussen en SMS-pumping, zonder extra drempels voor echte gebruikers. Bird Verify slaat verificatiecodes gehasht op, handhaaft limieten op pogingen en vervaltijden per sessie, beperkt herhaalde verzendingen per ontvanger en laat je landen die je niet bedient blokkeren voordat een bericht wordt verstuurd.
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;
Je account
Bevestig dat jij het bent.
Voer de code in die is verzonden naar
+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;
Je account
Bevestig dat jij het bent.
Voer de code in die is verzonden naar
+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;
Je account
Bevestig dat jij het bent.
Voer de code in die is verzonden naar
+1 ••• ••• 4567
Beveilig OTP-flows zonder eigen rate limiters te bouwen.
Wie verificatie zelf beveiligt, moet Redis-tellers bijhouden voor wachttijden bij opnieuw versturen, mislukte pogingen per sessie registreren, codes hashen voordat ze in de database komen en verkeer naar landen waar je niet actief bent wegfilteren. Met de Bird Verify API draaien die beveiligingen automatisch bij elke verificatiesessie. Verificatiecodes in platte tekst komen niet in API-responses en applicatielogs terecht, controle-endpoints handhaven een begrensd aantal pogingen en limieten per minuut, en met de instellingen van je werkruimte stem je vervaltijden en toegestane bestemmingen af voor inloggen met twee factoren en inloggen zonder wachtwoord.
Zo beschermt Bird verificatiesessies tegen misbruik.
Standaardbeveiligingen en werkruimte-instellingen die het raden van codes, verzendstromen en ongewenst internationaal verkeer stoppen.
- 01
Genereer onvoorspelbare verificatiecodes.
Genereer standaard numerieke verificatiecodes van 6 cijfers (of 4 tot 8 cijfers per verzoek) uit een cryptografische willekeurige bron over de volledige coderuimte, zodat aanvallers codes niet kunnen afleiden uit tijdstempels of oplopende tellers.
- 02
Houd codes in platte tekst uit logs en responses.
Sla verificatiecodes op als HMAC-SHA256-hashes en laat de platte tekst weg uit API-responses, webhook-payloads en dashboardlogs, zodat gelekte applicatielogs of supportweergaven geen actieve codes kunnen blootgeven.
- 03
Controleer ingevoerde codes in constante tijd.
Controleer door gebruikers ingevoerde cijfers in constante tijd voor alle actieve pogingen in de sessie, zodat de responstijd aanvallers niets verraadt over hoeveel cijfers overeenkwamen.
- 04
Blokkeer brute-force raden en laat verouderde sessies verlopen.
Elke sessie heeft standaard maximaal 5 controlepogingen en een vervaltijd van 10 minuten, of je past beide limieten aan in de instellingen van je werkruimte. Zodra de pogingen of de tijd op zijn, sluit de sessie en worden verdere controles geweigerd, met daarnaast een limiet op controles per minuut.
- 05
Beperk herhaalde verzendingen en blokkeer ongebruikte landen.
Handhaaf een wachttijd van 60 seconden voor opnieuw versturen (instelbaar tot een uur) en een doorlopende limiet van 5 verzendingen per ontvangeradres per uur, zodat bots de telefoon van een gebruiker niet kunnen overspoelen of je tegoed kunnen uitputten. Schakel in het dashboard landen uit die je niet bedient om SMS-pumping naar die bestemmingen te blokkeren voordat een bericht wordt verstuurd.
Help echte gebruikers bij typefouten en blokkeer brute-force lussen.
Typt een gebruiker een cijfer verkeerd, dan vertelt de controleresponse je app hoeveel pogingen er nog over zijn, zodat je om een nieuwe poging kunt vragen. Zijn alle pogingen van de sessie gebruikt, dan sluit de verificatie automatisch en blokkeert verdere pogingen tot er een nieuwe sessie start.
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 }Binnenkort: automatische risicosignalen en uitgavenplafonds.
Naast de landinstellingen en verzendlimieten per ontvanger die nu al beschikbaar zijn, bouwen we een fraudelaag direct in de verificatielevenscyclus. Omdat die op dezelfde verzend- en controle-endpoints draait, kan je team risicoregels via configuratie inschakelen zonder applicatiecode te wijzigen.
Risicosignalen bij verificatieverzoeken. Geef apparaat-, IP- en verzoekcontext mee bij het starten van een verificatie, zodat pogingen met een hoog risico worden geblokkeerd voordat er een bericht uitgaat en er providerkosten ontstaan.
Snelheidslimieten per prefix en uitgavenplafonds. Combineer verzendlimieten per land en per prefix met verificatielimieten voor je werkruimte om aanvallen met kunstmatig opgeblazen verkeer (AIT) op premium nummerreeksen te stoppen voordat ze je budget uitputten.
Beslissingen op basis van bezorggeschiedenis. Beoordeel nieuwe verificatieverzoeken aan de hand van de pogings- en conversiegeschiedenis die Bird Verify over alle kanalen vastlegt, en toon geblokkeerde uitkomsten direct via je bestaande statushandler.
Bouw het op het Verify-platform
Bezorging via meerdere kanalen, fallback-routering en authenticatieflows op dezelfde API.
Schaal zonder controle te verliezen.
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.