Przejdź do treści
SENDLY by ACTIOSENDLY by ACTIO
Blog
Tutorial11 min·

Wdrożenie 2FA przez SMS: kompletny przewodnik bezpieczeństwa dla firm

SMS jako drugi składnik logowania ma jedną przewagę nad aplikacjami uwierzytelniającymi i powiadomieniami push: dociera zawsze, na każdy telefon, bez instalacji i bez konta w dodatkowej aplikacji. Dla większości aplikacji SaaS, bankowości i e-commerce to optymalny kompromis między bezpieczeństwem a dostępnością. W tym przewodniku pokażemy, jak wdrożyć 2FA przez SMS tak, żeby było i bezpieczne, i odporne na nadużycia – a nie tylko „działało na demo".

Kiedy SMS 2FA ma sens (a kiedy nie)

SMS sprawdza się jako 2FA wszędzie tam, gdzie liczy się zasięg i prostota: logowanie do panelu, potwierdzenie płatności (PSD2 SCA), weryfikacja numeru przy rejestracji, autoryzacja wrażliwych operacji. To także najlepszy fallback, gdy push notification nie dotrze – bo użytkownik zmienił telefon, nie ma internetu albo odinstalował aplikację.

Bądźmy uczciwi co do ograniczeń: dla kont o najwyższym profilu ryzyka (np. duże transfery krypto) warto rozważyć klucze sprzętowe lub TOTP, bo SMS jest teoretycznie podatny na SIM-swapping. Dla 95% zastosowań biznesowych SMS pozostaje jednak najlepszym stosunkiem bezpieczeństwa do konwersji – bo każdy potrafi przepisać kod z SMS-a, a nie każdy skonfiguruje aplikację TOTP.

Architektura: nie trzymaj logiki OTP u siebie

Najczęstszy błąd to generowanie i przechowywanie kodów we własnej bazie. To zbędne ryzyko: musisz bezpiecznie składować kody, zarządzać ich wygaśnięciem i czyścić bazę. Z naszym API 2FA robisz to dwoma wywołaniami:

POST /otp/send    → generuje i wysyła kod
POST /otp/verify  → sprawdza kod, zwraca true/false

Długość kodu (4, 6 lub 8 cyfr) i czas życia (od 30 sekund do 10 minut) konfigurujesz sam. Krótszy kod i krótszy TTL = większe bezpieczeństwo, ale niższa wygoda; 6 cyfr i 5 minut to rozsądny domyślny kompromis.

Rate-limiting i ochrona przed nadużyciami

Bez limitów 2FA staje się wektorem ataku – i to kosztownym, bo każdy wysłany SMS to wydatek. Wdróż wielowarstwową ochronę:

  • Limit per numer – maks. 3–5 kodów na godzinę na ten sam numer (chroni przed „SMS bombing").
  • Cooldown – minimum 30–60 sekund między kolejnymi żądaniami kodu.
  • Limit prób weryfikacji – blokada po 3–5 błędnych kodach, żeby uniemożliwić brute-force.
  • Limit per IP – ogranicz liczbę numerów obsługiwanych z jednego adresu.

Nasze API ma wbudowany rate-limiting per numer oraz pełny audit log każdego OTP: kiedy wysłany, kiedy zweryfikowany, z jakiego IP. To bezcenne przy analizie incydentów i przy audytach bezpieczeństwa.

Dostarczalność = bezpieczeństwo

Kod, który nie dotrze, to zablokowany użytkownik – a w praktyce porzucony koszyk albo zgłoszenie do supportu. Mediana czasu dostarczenia SMS-a w Polsce to ok. 2 sekundy. Klucz to jakość tras: failover na alternatywnego operatora ratuje sytuację, gdy pierwsza próba zawiedzie. Jako polski operator zarejestrowany w UKE mamy bezpośrednie połączenia z sieciami krajowymi, co przekłada się na wysoką, stabilną dostarczalność OTP.

UX kodów: drobiazgi, które robią różnicę

Bezpieczeństwo nie może zabijać wygody. Kilka sprawdzonych praktyk: w treści SMS-a podaj nazwę usługi i sam kod blisko początku (autouzupełnianie iOS/Android czyta kod automatycznie); dodaj prefiks @domena #kod dla web OTP API; nie wysyłaj w jednym SMS-ie linku i kodu naraz (uczy phishingu). Pole nadawcy ustaw na nazwę marki – jak to zrobić, opisujemy w artykule o Sender ID.

Zgodność z PSD2 i RODO

W płatnościach SMS OTP jest jednym z akceptowanych elementów silnego uwierzytelnienia klienta (SCA) – łączysz go z elementem wiedzy (hasło/PIN) dla pełnej zgodności z PSD2. Od strony danych: przetwarzamy numery wyłącznie na serwerach w UE, z pełną umową powierzenia, a logi trzymamy tylko tyle, ile wymaga prawo. Szczegóły integracji znajdziesz w dokumentacji, a konto testowe z 100 SMS gratis założysz na rejestracji.

FAQ

Czy muszę sam generować i przechowywać kody OTP?+

Nie. Endpoint /otp/send generuje i wysyła kod, a /otp/verify go waliduje. Nie trzymasz logiki ani kodów po swojej stronie – mniej ryzyka i mniej kodu do utrzymania.

Jak zabezpieczyć się przed floodingiem (SMS bombing)?+

API ma rate-limiting per numer (np. 3–5 kodów/godzinę) i audit log. Dodatkowo wdróż cooldown między żądaniami, limit błędnych prób weryfikacji i limit per IP.

Czy SMS 2FA spełnia wymogi PSD2 SCA?+

Tak. SMS OTP jest akceptowanym elementem „posiadania" w silnym uwierzytelnieniu klienta. Łączysz go z elementem wiedzy (hasło) dla pełnej zgodności.

Czy SMS 2FA jest bezpieczny mimo ryzyka SIM-swap?+

Dla większości zastosowań biznesowych tak – to najlepszy kompromis bezpieczeństwa i konwersji. Dla kont o skrajnym ryzyku warto dołożyć TOTP lub klucze sprzętowe.

Czytaj dalej

Zacznij wysyłać SMS-y dzisiaj.

100 wiadomości gratis. Bez karty kredytowej. Bez abonamentu. Aktywacja w 30 sekund.