Kod jest tajny. Traktujemy go jak tajny.
Jednorazowy kod jest tak bezpieczny, jak sposób jego generowania, przechowywania i ograniczania liczby żądań. Bird Verify generuje kody z kryptograficznego źródła, przechowuje tylko hash, porównuje w stałym czasie i ogranicza zarówno wysyłki, jak i próby odgadnięcia — wyciek logów ani atak brute-force nic atakującemu nie dają. Scoring oszustw to kolejny krok, budowany na tej bazie.
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;
Twoje konto
Potwierdź, że to Ty.
Wpisz kod wysłany na
+1 ••• ••• 4567Przykładowy kod weryfikacyjny
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 jest wyłącznie jako hash; sprawdzenia działają w stałym czasie i w ramach ograniczonego budżetu prób; wysyłki są limitowane per odbiorca i per obszar roboczy. Nie musisz tego włączać ani konfigurować — tak po prostu działa API, niezależnie od tego, czy używasz jej do logowania dwuskładnikowego, czy logowania bez hasła.
Pięć zabezpieczeń w każdej weryfikacji.
Bez dodatkowej konfiguracji, bez płatnego dodatku.
- 01
Generowanie kryptograficzne.
Kody pochodzą z kryptograficznego źródła losowego, równomiernie rozłożone w przestrzeni kodów — nie z przewidywalnego licznika ani znacznika czasu.
- 02
Hashowane w spoczynku, nigdy wysyłane w postaci jawnej.
Przechowywany jest tylko HMAC-SHA256 każdego kodu; tekst jawny nigdy nie jest zwracany przez API ani zapisywany w Twoim stosie czy naszych logach.
- 03
Porównanie w stałym czasie.
Przesłane kody są porównywane w stałym czasie, więc atakujący nie wyciągnie wniosków z czasu trwania sprawdzenia.
- 04
Blokada po wyczerpaniu prób.
Każda sesja ma ograniczoną liczbę sprawdzeń (domyślnie 5). Po ich wyczerpaniu sesja kończy się niepowodzeniem — zgadywanie nie może trwać w nieskończoność.
- 05
Limity wysyłek.
Limit wysyłek per odbiorca i okres oczekiwania przed ponownym wysłaniem ograniczają koszty i powierzchnię ataku — każde przekroczenie zwraca 429 z Retry-After.
Próby atakującego kończą się, zanim skończą się Twoi użytkownicy.
Błędny kod zwraca liczbę pozostałych prób, a sesja kończy się niepowodzeniem po wyczerpaniu budżetu — atak brute-force trafia na ścianę na długo przed znalezieniem kodu.
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 }Wkrótce: sygnały oszustw i ochrona przed SMS-pumpingiem.
Historia wysyłek, którą Verify już rejestruje, jest fundamentem warstwy antyfraudowej, którą teraz 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ż kontekst urządzenia, IP i żądania przy weryfikacji — próby wysokiego ryzyka otrzymują wynik „zablokowany
Ochrona przed SMS-pumpingiem i AIT. Limity wysyłek per kraj i per prefiks oraz pułap wydatków per obszar roboczy blokują atak sztucznie zawyżonego ruchu, który kieruje OTP na numery premium w celu podziału przychodów z operatorem.
Zbudowane na tym, co już działa. Ocena ryzyka korzysta z historii prób, którą Verify gromadzi od pierwszego dnia, a wynik „zablokowany
Reszta platformy Verify
Jedno API, jeden zestaw kluczy. Poznaj pozostałe możliwości.
Skaluj bez
utraty kontroli.
Organizuj zespoły w obszarach roboczych, kontroluj dostęp do API i śledź zmiany w logach audytu.
Dziennik audytu
Produkcja- Przestrzeń robocza
- Produkcja
- Zasób
- Agent wysyłki
- Dostęp do odczytuOdczyt i zapis