Anti-misbruik & codebeveiliging

In preview

De code is een geheim. Wij behandelen het als zodanig.

Instellen in:
Cursor

Een eenmalige code is slechts zo goed 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 begrenst zowel verzendingen als pogingen — zodat een gelekt logbestand of een brute-force-loop een aanvaller nergens brengt. 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 } = await bird.verify.verifications.check({
  to:   { phone_number: "+15551234567" },
  code: userInput,
}).safe();

Beveiliging die standaard aan staat, geen add-on.

Elke verificatie via de Bird Verify API heeft dezelfde bescherming: de code wordt server-side gegenereerd, nooit geretourneerd en alleen als hash opgeslagen; controles verlopen in constante tijd en tegen een begrensd pogingsbudget; en verzendingen zijn gelimiteerd per ontvanger en per workspace. U hoeft niets in te schakelen of te configureren — zo werkt de API, of u het nu gebruikt voor tweefactorauthenticatie of wachtwoordloos inloggen.

Vijf beschermingen bij elke verificatie.

Geen setupstap, geen add-on SKU.

  1. 01

    Cryptografische generatie.

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

  2. 02

    Gehasht in rust, nooit via de API naar buiten.

    Alleen een HMAC-SHA256 van elke code wordt opgeslagen; de leesbare tekst wordt nooit door de API geretourneerd en nooit naar uw stack of onze logs geschreven.

  3. 03

    Constant-time vergelijking.

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

  4. 04

    Pogingvergrendeling.

    Elke sessie heeft een begrensd aantal controles (standaard 5). Zodra deze op zijn, faalt de sessie — raden kan dus niet eindeloos doorgaan.

  5. 05

    Verzendlimieten en quota.

    Een verzendlimiet per ontvanger, een herverzendings-cooldown en een dagelijks quota per workspace begrenzen de kosten en het misbruikoppervlak — elk met een 429 en Retry-After.

Raadpogingen raken op vóór uw gebruikers.

Een verkeerde code komt terug als resultaat met het aantal resterende pogingen, en de sessie faalt zodra het budget op is — een brute-force-loop loopt tegen een muur in plaats van een open deur.

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

Binnenkort: fraudesignalen en SMS-pompbescherming.

De verzendgeschiedenis per bericht die Verify vandaag vastlegt, is het fundament voor een fraudelaag die we nu bouwen. Deze gebruikt dezelfde create- en check-calls — dus later adopteren is een configuratiewijziging, geen herintegratie.

Risicosignalen bij aanmaak. Geef apparaat-, IP- en requestcontext mee bij een verificatie, en pogingen met hoog risico krijgen een geblokkeerd resultaat voordat er ooit een code wordt verzonden — zodat u niet betaalt om een aanvaller te berichten.

SMS-pomp- en AIT-bescherming. Verzendlimieten per land en per prefix plus een bestedingsplafond per workspace stoppen de kunstmatig-opgeblazen-verkeer-aanval die OTP's naar premiumnummerreeksen stuurt voor carrier-omzetdeling.

Gebouwd op wat er al is. Risicobeoordeling leest de pogingsgeschiedenis die Verify vanaf dag één bijhoudt, en het geblokkeerde resultaat maakt al deel uit van het statusmodel — dus de fraudelaag landt zonder uw integratie te hervormen.

Veelgestelde vragen over verificatiebeveiliging

Waar wordt de eenmalige code opgeslagen?+
Alleen als een HMAC-SHA256-hash. Bird genereert de code met een cryptografische willekeurige bron, verzendt deze en bewaart de hash om mee te vergelijken — de leesbare tekst wordt nooit door de API geretourneerd of naar logs geschreven.
Hoe voorkomt u dat iemand de code brute-forcet?+
Elke sessie heeft een begrensd aantal controles (standaard 5), en elke controle wordt in constante tijd vergeleken zodat timing niets onthult. Zodra het budget op is, faalt de sessie — een aanvaller kan niet blijven raden.
Hoe zit het met SMS-pompen en kunstmatig opgeblazen verkeer?+
Verzendlimieten per ontvanger en een dagelijks quota per workspace begrenzen vandaag de kosten. Speciale fraudescoring en SMS-pompbescherming komen binnenkort, voortbouwend op de verzendgeschiedenis die Verify al vastlegt.
Kosten deze beschermingen extra?+
Nee. Cryptografische generatie, gehashte opslag, constant-time controles, pogingvergrendeling en verzendlimieten zijn hoe elke verificatie werkt — er is geen beveiligingsniveau om bij te kopen.
Van wie zien mijn gebruikers de code?+
Authifly, het verificatiemerk van Bird. Dit is de identiteit bij elke code die uw gebruikers ontvangen: e-mail komt van otp@verify.authifly.com of uw eigen geverifieerde domein, en SMS en WhatsApp zijn Authifly-branded. authifly.com is een publieke pagina die ontvangers geruststelt dat Authifly legitieme eenmalige codes verstuurt namens een bedrijf. Bird is het platform waarop u bouwt; Authifly is wat de ontvanger ziet.

Codes gegenereerd, opgeslagen en rate-limited zoals het hoort.

Beveiliging is ingebouwd in Bird Verify, niet erbovenop verkocht: de kanalen, de code en de limieten zitten in dezelfde twee endpoints.

Begin met één kanaal.
Voeg de rest toe wanneer je er klaar voor bent.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra je een betaalmethode toevoegt en een afzender verifieert.

Gebruik je Claude Code, Cursor of Codex? Kopieer een setup-prompt en je agent installeert de Bird CLI en skills voor je. Kies de jouwe:

Cursor