Przejdź do treści
Intum Dev

Metody 2FA w aplikacjach SaaS — porównanie i rekomendacje

Aktualizacja: 5 min czytania

Dwuskładnikowe uwierzytelnianie (2FA)

Dwuskładnikowe uwierzytelnianie to dodatkowa warstwa zabezpieczeń przy logowaniu. Oprócz hasła użytkownik musi potwierdzić tożsamość drugim sposobem — kodem z telefonu, kluczem sprzętowym albo biometrią.

W aplikacjach SaaS to jeden z najważniejszych mechanizmów ochrony kont. Poniżej porównanie wszystkich popularnych metod — od najsłabszych do najsilniejszych.

Porównanie metod 2FA

Backup codes (kody zapasowe)

Bezpieczeństwo: ⭐ | Prostota: ⭐⭐⭐⭐⭐

8-10 jednorazowych kodów wygenerowanych przy konfiguracji 2FA. Użytkownik zapisuje je na kartce lub w pliku. Każdy kod działa raz.

Nie powinny być samodzielną metodą 2FA — to metoda awaryjna na wypadek utraty telefonu. Problem: ludzie fotografują kody telefonem, co sprawia, że oba faktory (hasło + kod) są na tym samym urządzeniu.

SMS OTP

Bezpieczeństwo: ⭐⭐ | Prostota: ⭐⭐⭐⭐⭐

6-cyfrowy kod wysyłany SMS-em na numer telefonu. Najprostszy dla użytkownika — każdy rozumie jak to działa.

Wady: podatny na atak SIM swap (przestępca przenosi numer na swoją kartę SIM), przechwycenie przez protokół SS7, phishing. Do tego koszt per wysyłka (~0.03-0.10 PLN/SMS) i opóźnienia dostawy.

Email OTP

Bezpieczeństwo: ⭐⭐ | Prostota: ⭐⭐⭐⭐

Kod lub magic link wysyłany na email. Podobne bezpieczeństwo jak SMS — zależy od tego czy skrzynka użytkownika jest bezpieczna. Darmowy, ale wolniejszy niż SMS.

TOTP (Google Authenticator, Authy) — polecany

Bezpieczeństwo: ⭐⭐⭐ | Prostota: ⭐⭐⭐

Aplikacja na telefonie generuje 6-cyfrowy kod co 30 sekund. Kod jest obliczany lokalnie na podstawie wspólnego sekretu — nie wymaga internetu ani SMS-ów.

Setup jednorazowy: użytkownik skanuje kod QR aplikacją Authenticator. Potem przy każdym logowaniu wpisuje aktualny kod z aplikacji.

Dlaczego polecamy TOTP:

  • Wystarczające bezpieczeństwo dla 99% aplikacji SaaS
  • Odporny na SIM swap i przejęcie maila (kod generowany lokalnie)
  • Zero kosztów operacyjnych — open standard (RFC 6238), brak opłat per użycie
  • Brak zależności zewnętrznych — nie płacisz za SMS-y, nie potrzebujesz własnej apki mobilnej
  • Użytkownicy znają Google Authenticator / Authy
  • Prosta implementacja — gem rotp w Ruby, ~50 linii kodu
  • Naturalnie łączy się z backup codes jako metodą awaryjną

Wady: nadal podatny na phishing (użytkownik może wpisać kod na fałszywej stronie). Zmiana telefonu wymaga ponownej konfiguracji.

Push notification

Bezpieczeństwo: ⭐⭐⭐⭐ | Prostota: ⭐⭐⭐⭐⭐

Powiadomienie w aplikacji mobilnej — “Czy to Ty się logujesz? Tak/Nie”. Jedno stuknięcie zamiast przepisywania kodów. Najlepszy UX ze wszystkich metod.

Wymaga własnej aplikacji mobilnej, więc raczej dla dużych graczy (Duo, Microsoft Authenticator). Podatny na prompt bombing — atakujący spamuje powiadomieniami aż użytkownik kliknie “Tak” z frustracji.

WebAuthn / Passkeys (FIDO2) — polecany

Bezpieczeństwo: ⭐⭐⭐⭐⭐ | Prostota: ⭐⭐⭐⭐

Klucz kryptograficzny przechowywany w urządzeniu użytkownika. Uwierzytelnienie przez biometrię (odcisk palca, Face ID) lub PIN systemowy. Bez przepisywania kodów — przyłóż palec i gotowe.

Dlaczego polecamy Passkeys:

  • Jedyna metoda w pełni odporna na phishing — klucz jest kryptograficznie powiązany z domeną, więc fałszywa strona nie dostanie odpowiedzi
  • Lepszy UX niż TOTP — palec / Face ID zamiast przepisywania 6 cyfr
  • Zero kosztów — standard W3C, wbudowany w przeglądarki (Chrome, Safari, Firefox) i systemy (Android, iOS, Windows Hello)
  • Nie wymaga instalacji żadnej aplikacji
  • Trend branżowy — Google, GitHub, Microsoft, Shopify już przeszły na passkeys

Wady: część użytkowników nie rozumie jeszcze konceptu (“co to passkey?”, “a jak zmienię komputer?”). Recovery przy utracie urządzenia wymaga przemyślanego flow.

Klucz sprzętowy (YubiKey, FIDO2)

Bezpieczeństwo: ⭐⭐⭐⭐⭐ | Prostota: ⭐⭐⭐

Fizyczny klucz USB/NFC — włóż i dotknij. Technologia ta sama co Passkeys (FIDO2), ale klucz jest osobnym urządzeniem, nie częścią telefonu/laptopa.

Najbezpieczniejsza opcja, ale wymaga kupienia klucza (~100-200 PLN) i noszenia go przy sobie. Głównie dla administratorów, kont uprzywilejowanych i firm z rygorystycznymi wymaganiami bezpieczeństwa.

Rekomendacja dla aplikacji SaaS

Etap 1: Passkeys / WebAuthn + backup codes

Passkeys to najlepsza metoda 2FA dostępna dziś — najwyższe bezpieczeństwo (odporne na phishing), świetny UX (palec / Face ID, zero kodów do przepisywania) i zero kosztów (standard wbudowany w przeglądarki). Backup codes jako metoda awaryjna przy utracie urządzenia.

Etap 2: TOTP jako alternatywa

Nie każdy użytkownik jest gotowy na passkeys. TOTP (Google Authenticator) to sprawdzona, znana metoda — dobra alternatywa dla tych, którzy wolą tradycyjne podejście z kodem z telefonu.

Etap 3: SMS jako recovery fallback

SMS nie powinien być metodą 2FA do codziennego logowania — jest za słaby. Ale ma sens jako ostatnia deska ratunku do odzyskiwania konta. Scenariusz: użytkownik stracił telefon (nie ma TOTP), nie ma backup codes, nowe urządzenie (nie ma passkey). SMS na zweryfikowany numer pozwala odzyskać dostęp.

Ważne: SMS jako recovery to świadomy kompromis między bezpieczeństwem a dostępnością. Lepsze to niż procedura “napisz do supportu i czekaj 3 dni”. Ale użytkownik powinien wiedzieć, że to opcja awaryjna, nie domyślna.

Czego unikać

SMS jako jedyna metoda 2FA to złudzenie bezpieczeństwa. Jeśli już — wyłącznie jako fallback do odzyskiwania konta, nigdy jako główna metoda.

Kluczowa różnica: phishing

To najważniejsze kryterium podziału metod 2FA:

  • SMS, Email, TOTP, backup codes — podatne na phishing. Użytkownik może wpisać kod na fałszywej stronie, a atakujący użyje go na prawdziwej
  • WebAuthn, Passkeys, klucze sprzętowe — odporne na phishing. Klucz kryptograficzny jest powiązany z domeną — fałszywa strona fizycznie nie może uzyskać odpowiedzi

To właśnie dlatego Passkeys/WebAuthn to przyszłość — rozwiązują fundamentalny problem, którego TOTP nie rozwiązuje.

Czy ten wpis był pomocny?

Udostępnij

Komentarze