Ochrona przed nadużyciami i bezpieczeństwo kodów
W wersji zapoznawczejKod to sekret. Traktujemy go jak sekret.
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.
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.
- 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.
- 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.
- 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.
- 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ść.
- 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.
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: 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?+
Jak zapobiegacie atakowi brute-force na kod?+
A co z SMS pumping i sztucznie zawyżonym ruchem?+
Czy te zabezpieczenia kosztują dodatkowo?+
Od kogo moi użytkownicy widzą kod?+
Pozostałe elementy platformy Verify
Jedno API, jeden zestaw kluczy. Poznaj pozostałe możliwości.
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.