Kod weryfikacyjny musi być ważny wystarczająco długo, by dotarł i został wpisany, jednocześnie ograniczając możliwość odgadnięcia lub ponownego użycia. Zmierz cały przebieg weryfikacji, zanim wybierzesz czas ważności.
Jak długo kod weryfikacyjny powinien być ważny?
Nie więcej niż dziesięć minut na wysłany kod uwierzytelniający, wliczając dostarczenie i wpisanie.
Wytyczne NIST dotyczące uwierzytelniania ustalają ten maksymalny czas dla uwierzytelniania przez osobny kanał. Wymagają też, by serwer akceptował kod tylko raz, zapobiegając ponownemu użyciu po udanym uwierzytelnieniu.
Oznacz kod jako wykorzystany, gdy weryfikacja się powiedzie. Odrzuć kolejne przesłanie tego kodu, nawet jeśli nadejdzie przed wygaśnięciem.
Dziesięć minut to maksimum, a nie zalecany czas oczekiwania. Wybierz krótsze okno, jeśli Twoje pomiary dostarczenia i wpisywania na to pozwalają.
Kod, który dociera po czterdziestu sekundach, zostawia dziewięć minut i dwadzieścia sekund w dziesięciominutowym oknie. Uwzględnij czas na przeczytanie i wpisanie, korzystając z pomiarów dostarczenia.
Kody generowane przez aplikację uwierzytelniającą działają w innym modelu czasowym. Użyj odpowiednich reguł TOTP lub HOTP, gdy aplikacja generuje kod lokalnie.
Ile cyfr powinien mieć?
Użyj co najmniej sześciu losowo wygenerowanych cyfr. Ustaw limit nieudanych prób odgadnięcia.
NIST wymaga co najmniej sześciu cyfr dziesiętnych z zatwierdzonego generatora losowego dla wysyłanych kodów uwierzytelniających. Przewidywalny licznik ani znacznik czasu nie spełniają tego wymagania.
Sześć losowych cyfr daje milion możliwych kodów. Pięć różnych prób odgadnięcia to pięć szans na milion, czyli jedna na dwieście tysięcy.
Licz nieudane próby dla danego konta. NIST wymaga, by nowy kod zachowywał ten licznik, więc ponowne wysłanie nie może dawać nieograniczonej liczby prób.
Limit prób wymaga też ścieżki odzyskania dostępu dla prawowitych użytkowników, którzy go wyczerpią. Zdecyduj, jak odzyskają dostęp bez resetowania limitu dla atakującego.
Czy powinienem użyć ośmiu cyfr?
Użyj ośmiu, gdy mniejsze prawdopodobieństwo odgadnięcia uzasadnia wpisywanie dwóch dodatkowych cyfr.
Osiem losowych cyfr daje sto milionów możliwych kodów. Przy pięciu próbach szansa wynosi pięć na sto milionów.
To sto razy mniej niż pięć prób przy sześciu cyfrach. Zachowaj ten sam limit prób przy zwiększaniu długości kodu.
Dłuższe kody nie naprawiają braku limitu prób. Wprowadź limit prób, zanim potraktujesz dodatkowe cyfry jako wystarczające zabezpieczenie.
Co mogę skonfigurować w Bird?
Ustaw politykę kodów weryfikacyjnych dla obszaru roboczego. Sprawdzaj rozwiązane ustawienia zwracane dla każdej weryfikacji.
| Pole | Co wybrać |
|---|---|
code_length | Bird przyjmuje od 4 do 8 znaków. Wybierz co najmniej sześć dla tej polityki |
code_type | Sprawdź zwracany zestaw znaków, numeric lub alphanumeric |
ttl_seconds | Bird przyjmuje od 1 do 59940 sekund. Utrzymuj okno uwierzytelniania na poziomie 600 sekund lub mniej |
max_attempts | Wybierz od 1 do 10 błędnych prób, zanim weryfikacja zakończy się niepowodzeniem |
resend_cooldown_seconds | Wybierz od 0 do 3600 sekund między wysyłkami do odbiorcy |
Dozwolony czas ważności w API wykracza poza tę rekomendację uwierzytelniania. Ustaw wartość świadomie, zamiast traktować maksymalną akceptowaną wartość jako odpowiedni czas wygaśnięcia.
Żądanie weryfikacji może nadpisać code_length dla danej weryfikacji. Sprawdź rozwiązaną politykę, badając zachowanie różniące się od konfiguracji obszaru roboczego.
Co wybrać?
- Zacznij od sześciu losowych cyfr i niskiego, egzekwowanego limitu prób.
- Dostosuj okno ważności do zmierzonego czasu dostarczenia i wpisania, w ramach dziesięciu minut.
- Użyj ośmiu cyfr, gdy operacja uzasadnia mniejsze prawdopodobieństwo odgadnięcia.
- Egzekwuj jednorazowe użycie i zachowuj liczniki nieudanych prób przy wysyłaniu kolejnego kodu.
W skrócie
Nie więcej niż dziesięć minut.
Dostarczenie i wpisanie kodu zużywają okno ważności. Wybierz krótszy czas, jeśli zmierzony przebieg na to pozwala.
Użyj co najmniej sześciu losowych cyfr.
Licz nieudane próby odgadnięcia oprócz wyboru długości kodu. Dłuższe kody nie zastępują limitu prób.
Akceptuj każdy kod tylko raz.
Odrzuć wcześniej zaakceptowany kod, nawet jeśli jego okno ważności jeszcze nie upłynęło.
Zachowuj liczniki prób między ponownymi wysyłkami.
Wysłanie kolejnego kodu nie może dawać kontu nowej puli prób odgadnięcia.