Ochrona przed nadużyciami i bezpieczeństwo kodów

W wersji zapoznawczej

Kod to sekret. Traktujemy go jak sekret.

Skonfiguruj w:
Cursor

Kod jednorazowy jest tak bezpieczny, jak sposób jego generowania, przechowywania i ograniczania częstotliwości. Bird Verify generuje kody ze źródła kryptograficznego, przechowuje tylko hash, porównuje w stałym czasie i limituje zarówno wysyłki, jak i próby odgadnięcia — więc wyciek logów ani atak brute-force nie dają atakującemu żadnej przewagi. Ocena ryzyka oszustw to kolejny krok.

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();

Bezpieczeństwo domyślnie włączone, nie jako dodatek.

Każda weryfikacja w Bird Verify API ma te same zabezpieczenia: kod jest generowany po stronie serwera, nigdy nie jest zwracany i przechowywany wyłącznie jako hash; sprawdzenia odbywają się w stałym czasie i w ramach ograniczonego budżetu prób; wysyłki są limitowane per odbiorca i per workspace. Nie trzeba tego włączać ani konfigurować — tak po prostu działa API, niezależnie czy używasz go do logowania dwuskładnikowego, czy logowania bez hasła.

Pięć zabezpieczeń w każdej weryfikacji.

Bez dodatkowej konfiguracji, bez dodatkowego pakietu.

  1. 01

    Generowanie kryptograficzne.

    Kody są pobierane z kryptograficznego źródła losowego, równomiernie z całej przestrzeni kodów — nie z przewidywalnego licznika ani znacznika czasu.

  2. 02

    Hashowane w spoczynku, nigdy nie wychodzą w postaci jawnej.

    Przechowywany jest wyłącznie HMAC-SHA256 każdego kodu; tekst jawny nigdy nie jest zwracany przez API ani zapisywany w Państwa systemie czy naszych logach.

  3. 03

    Porównywanie w stałym czasie.

    Przesłane kody są porównywane w stałym czasie, więc atakujący nie dowiaduje się niczego z tego, jak długo trwa sprawdzenie.

  4. 04

    Blokada po wyczerpaniu prób.

    Każda sesja ma ograniczoną liczbę sprawdzeń (domyślnie 5). Po ich wyczerpaniu sesja kończy się niepowodzeniem, więc zgadywanie nie może trwać w nieskończoność.

  5. 05

    Limity wysyłek i kwoty.

    Limit wysyłek per odbiorca, opóźnienie przed ponownym wysłaniem i dzienny limit per workspace ograniczają koszty i powierzchnię ataku — każde przekroczenie zwraca 429 z Retry-After.

Próby zgadywania kończą się, zanim skończą się Twoi użytkownicy.

Błędny kod zwraca wynik z liczbą pozostałych prób, a sesja kończy się niepowodzeniem po wyczerpaniu budżetu — więc atak brute-force trafia na ścianę zamiast na otwarte drzwi.

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 }
Wkrótce

Wkrótce: sygnały oszustw i ochrona przed SMS pumping.

Historia wysyłek, którą Verify rejestruje już dziś, stanowi fundament warstwy antyfraudowej, którą obecnie budujemy. Działa na tych samych wywołaniach create i check — więc jej późniejsze wdrożenie to zmiana konfiguracji, nie ponowna integracja.

Sygnały ryzyka przy tworzeniu. Przekaż dane urządzenia, IP i kontekst żądania przy weryfikacji, a próby wysokiego ryzyka otrzymają status zablokowania, zanim kod zostanie wysłany — nie płacisz za wiadomości do atakującego.

Ochrona przed SMS pumping i AIT. Limity wysyłek per kraj i per prefiks oraz pułap wydatków per workspace eliminują atak polegający na sztucznie zawyżonym ruchu, który kieruje OTP na numery premium w celu podziału przychodów z operatorem.

Zbudowane na tym, co już istnieje. Ocena ryzyka korzysta z historii prób, którą Verify prowadzi od pierwszego dnia, a status zablokowania jest już częścią modelu statusów — więc warstwa antyfraudowa wchodzi bez przebudowy integracji.

FAQ dotyczące bezpieczeństwa weryfikacji

Gdzie jest przechowywany kod jednorazowy?+
Wyłącznie jako hash HMAC-SHA256. Bird generuje kod z kryptograficznego źródła losowego, wysyła go i zachowuje hash do porównania — tekst jawny nigdy nie jest zwracany przez API ani zapisywany w logach.
Jak zapobiegacie atakowi brute-force na kod?+
Każda sesja ma ograniczoną liczbę sprawdzeń (domyślnie 5), a każde z nich jest porównywane w stałym czasie, więc analiza czasu odpowiedzi nic nie ujawnia. Po wyczerpaniu budżetu sesja kończy się niepowodzeniem, więc atakujący nie może dalej zgadywać.
A co z SMS pumping i sztucznie zawyżonym ruchem?+
Limity wysyłek per odbiorca i dzienny limit per workspace ograniczają dziś wydatki. Dedykowana ocena ryzyka oszustw i ochrona przed SMS pumping pojawią się wkrótce, opierając się na historii wysyłek, którą Verify już rejestruje.
Czy te zabezpieczenia kosztują dodatkowo?+
Nie. Generowanie kryptograficzne, hashowane przechowywanie, porównywanie w stałym czasie, blokada po wyczerpaniu prób i limity wysyłek to standardowe działanie każdej weryfikacji — nie ma żadnego dodatkowego pakietu bezpieczeństwa do kupienia.
Od kogo moi użytkownicy widzą kod?+
Authifly, marka weryfikacyjna Bird. To tożsamość widoczna przy każdym kodzie, który otrzymują Twoi użytkownicy: e-mail przychodzi z otp@verify.authifly.com lub z Twojej własnej zweryfikowanej domeny, a SMS i WhatsApp są oznaczone marką Authifly. authifly.com to publiczna strona, która zapewnia odbiorców, że Authifly wysyła prawidłowe kody jednorazowe w imieniu firmy. Bird to platforma, na której budujesz; Authifly to to, co widzi odbiorca.

Kody generowane, przechowywane i limitowane tak, jak powinny być.

Bezpieczeństwo jest wbudowane w Bird Verify, a nie dokupowane osobno: kanały, kod i limity to te same dwa endpointy.

Zacznij od jednego kanału.
Dodaj kolejne, gdy będziesz gotowy.

Testowy klucz API otrzymasz od razu. Dostęp produkcyjny odblokujesz po dodaniu metody płatności i weryfikacji nadawcy.

Używasz Claude Code, Cursor lub Codex? Skopiuj prompt konfiguracyjny, a Twój agent zainstaluje za Ciebie Bird CLI i umiejętności. Wybierz swój:

Cursor