Der Code ist ein Geheimnis. Wir behandeln ihn auch so.

Ein Einmalcode ist nur so gut wie seine Erzeugung, Speicherung und Begrenzung der Anfragerate. Bird Verify erzeugt Codes mit einer kryptografischen Quelle, speichert nur einen Hash, vergleicht in konstanter Zeit und begrenzt sowohl Sendungen als auch Rateversuche – so bringt ein geleaktes Log oder eine Brute-Force-Schleife einem Angreifer nichts. Fraud-Scoring baut als Nächstes darauf auf.

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

Ihr Konto

Bestätigen Sie Ihre Identität.

Geben Sie den Code ein, der gesendet wurde an

+1 ••• ••• 4567

Beispiel-Bestätigungscode

482691
Code verifiziert
Code senden. Empfänger bestätigen.

Sicherheit, die standardmäßig aktiv ist – kein Zusatzmodul.

Jede Verifizierung über die Bird Verify API trägt dieselben Schutzmechanismen: Der Code wird serverseitig erzeugt, nie zurückgegeben und nur als Hash gespeichert; Prüfungen laufen in konstanter Zeit gegen ein begrenztes Versuchsbudget; und Sendungen sind pro Empfänger und pro Workspace gedeckelt. Sie müssen nichts aktivieren oder verdrahten: So verhält sich die API, egal ob Sie sie als Zwei-Faktor-Login oder passwortlose Anmeldung einsetzen.

Fünf Schutzmechanismen bei jeder Verifizierung.

Kein Setup-Schritt, kein Zusatz-SKU.

  1. 01

    Kryptografische Generierung.

    Codes werden aus einer kryptografischen Zufallsquelle gezogen, gleichverteilt über den Code-Raum – kein vorhersagbarer Zähler oder Zeitstempel.

  2. 02

    Im Ruhezustand gehasht, nie nach außen im Klartext.

    Nur ein HMAC-SHA256 jedes Codes wird gespeichert; der Klartext wird von der API nie zurückgegeben und nie in Ihren Stack oder unsere Logs geschrieben.

  3. 03

    Vergleich in konstanter Zeit.

    Eingereichte Codes werden in konstanter Zeit verglichen, sodass ein Angreifer aus der Dauer einer Prüfung nichts ableiten kann.

  4. 04

    Versuchssperre.

    Jede Sitzung hat eine begrenzte Anzahl an Prüfungen (standardmäßig 5). Sind sie aufgebraucht, schlägt die Sitzung fehl – Raten kann nicht endlos weiterlaufen.

  5. 05

    Sendelimits.

    Ein Sendelimit pro Empfänger und eine Abklingzeit zwischen Sendungen begrenzen die Kosten und die Angriffsfläche – jeweils ein 429 mit Retry-After.

Rateversuche sind erschöpft, bevor Ihre Nutzer es sind.

Ein falscher Code wird mit der Anzahl verbleibender Versuche zurückgewiesen, und die Sitzung schlägt fehl, sobald das Budget aufgebraucht ist – eine Brute-Force-Schleife läuft also lange vor dem richtigen Code gegen eine Wand.

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 }
Demnächst

Demnächst: Fraud-Signale und Schutz vor SMS-Pumping.

Die Sendehistorie, die Verify pro Sendung bereits erfasst, ist das Fundament für eine Fraud-Schicht, die wir gerade aufbauen. Sie nutzt dieselben Create- und Check-Aufrufe – die spätere Einführung ist eine Konfigurationsänderung, keine Neuintegration.

Risikosignale beim Erstellen. Übergeben Sie Geräte-, IP- und Anfrage-Kontext bei einer Verifizierung, und Hochrisiko-Versuche erhalten ein Blocked-Ergebnis, bevor überhaupt ein Code gesendet wird – Sie zahlen nicht dafür, einen Angreifer zu benachrichtigen.

SMS-Pumping- und AIT-Schutz. Sendelimits pro Land und pro Präfix sowie eine Ausgabenobergrenze pro Workspace unterbinden den Angriff mit künstlich aufgeblähtem Datenverkehr, der OTPs an Premium-Nummernbereiche sendet, um Carrier-Umsatzbeteiligungen abzugreifen.

Aufgebaut auf dem, was bereits vorhanden ist. Die Risikobewertung liest die Versuchshistorie, die Verify vom ersten Tag an führt, und das Blocked-Ergebnis ist bereits Teil des Statusmodells – die Fraud-Schicht lässt sich ohne Umbau Ihrer Integration einführen.

Skalieren, ohne
die Kontrolle zu verlieren.

Organisieren Sie Teams in Workspaces, steuern Sie den API-Zugriff und verfolgen Sie Änderungen über Audit-Logs.

BirdHarborOrganisation
ArbeitsbereicheProduktionSandbox

Zustellagent

API-Schlüssel · Team Kundenbetrieb
Aktiv
BerechtigungenZugriff
E-MailLesen und Schreiben
SMSLesen und Schreiben
ALAlex Lee AdministratorBerechtigungen aktualisiert

Audit-Protokoll

Produktion
Workspace
Produktion
Ressource
Zustellagent
WhatsApp
LesezugriffLesen und Schreiben
Erfolgreich

Starten Sie mit Verify.
Kanalübergreifend entwickeln mit Bird.

Ihre nächste Idee. Bereit zur Verbindung.