De code is een geheim. We behandelen hem ook zo.

Een eenmalige code is alleen zo sterk als de manier waarop hij wordt gegenereerd, opgeslagen en beperkt. Bird Verify genereert codes met een cryptografische bron, slaat alleen een hash op, vergelijkt in constante tijd en beperkt zowel het aantal verzendingen als het aantal pogingen — zodat een gelekt logbestand of een brute-force-aanval een aanvaller niets oplevert. Fraudescoring bouwt hier als volgende stap op voort.

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;
Verificatiestroom

Je account

Bevestig dat jij het bent.

Voer de code in die is verzonden naar

+1 ••• ••• 4567

Voorbeeld van een verificatiecode

482691
Code geverifieerd
Stuur een code. Bevestig de ontvanger.

Beveiliging die standaard actief is, niet een extra optie.

Elke verificatie op de Bird Verify API heeft dezelfde beschermingen: de code wordt server-side gegenereerd, nooit teruggestuurd en alleen als hash opgeslagen; controles draaien in constante tijd tegen een begrensd pogingsbudget; en verzendingen worden beperkt per ontvanger en per werkruimte. Je hoeft niets te activeren of aan te sluiten: zo werkt de API, of je hem nu gebruikt voor tweefactorauthenticatie of wachtwoordloos inloggen.

Vijf beschermingen bij elke verificatie.

Geen installatiestap, geen extra SKU.

  1. 01

    Cryptografische generatie.

    Codes worden gegenereerd met een cryptografische willekeurige bron, uniform verdeeld over de coderuimte — geen voorspelbare teller of tijdstempel.

  2. 02

    Gehasht in opslag, nooit als plaintext verzonden.

    Alleen een HMAC-SHA256 van elke code wordt opgeslagen; de plaintext wordt nooit geretourneerd door de API en nooit weggeschreven naar jouw stack of onze logs.

  3. 03

    Vergelijking in constante tijd.

    Ingediende codes worden in constante tijd vergeleken, zodat een aanvaller niets leert van hoe lang een controle duurt.

  4. 04

    Vergrendeling bij te veel pogingen.

    Elke sessie heeft een begrensd aantal controles (standaard 5). Zijn die op, dan faalt de sessie — raden kan dus niet eindeloos doorgaan.

  5. 05

    Verzendlimieten.

    Een verzendlimiet per ontvanger en een herzendings-cooldown begrenzen de kosten en het misbruikoppervlak, elk met een 429 en Retry-After.

Raadpogingen raken op vóór je gebruikers.

Een foute code komt terug met het resterende aantal pogingen, en de sessie faalt zodra het budget op is — een brute-force-aanval loopt dus vast lang voordat hij de code vindt.

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 }
Binnenkort beschikbaar

Binnenkort beschikbaar: fraudesignalen en bescherming tegen SMS-pumping.

De verzendhistorie per bericht die Verify nu vastlegt, is de basis voor een fraudelaag die we nu bouwen. Die gebruikt dezelfde create- en check-aanroepen, dus later overstappen is een configuratiewijziging, geen herintegratie.

Risicosignalen bij create. Stuur apparaat-, IP- en requestcontext mee bij een verificatie. Pogingen met een hoog risico krijgen een blocked-uitkomst voordat er een code wordt verstuurd, zodat je niet betaalt om een aanvaller te berichten.

SMS-pumping en AIT-bescherming. Verzendlimieten per land en per prefix plus een bestedingsplafond per werkruimte stoppen de artificially-inflated-traffic-aanval die OTP's naar premiumnummerbereiken stuurt voor carrier-revenuesharing.

Gebouwd op wat er al is. Risicobeoordeling leest de pogingshistorie die Verify vanaf dag één bijhoudt, en de blocked-uitkomst maakt al deel uit van het statusmodel — de fraudelaag landt dus zonder je integratie te hervormen.

Schaal op zonder
controle te verliezen.

Organiseer teams in werkruimtes, beheer API-toegang en traceer wijzigingen via auditlogs.

BirdHarborOrganisatie
WerkruimtesProductieSandbox

Verzendagent

API-sleutel · Team Klantoperaties
Actief
MachtigingenToegang
EmailLezen en schrijven
SMSLezen en schrijven
ALAlex Lee BeheerderMachtigingen bijgewerkt

Auditlog

Productie
Werkruimte
Productie
Resource
Verzendagent
WhatsApp
LeestoegangLezen en schrijven
Geslaagd

Begin met Verify.
Bouw over kanalen heen met Bird.

Jouw volgende idee. Klaar om te verbinden.