[Intum Dev](https://intum.dev.md) / [Oprogramowanie dla firm](https://intum.dev/oprogramowanie-dla-firm.md)

# [Metody 2FA w aplikacjach SaaS — porównanie i rekomendacje](https://intum.dev/oprogramowanie-dla-firm/metody-2fa-w-aplikacjach-saas-porownanie-i-rekomendacje.md)

## 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.