Pole oznaczone jako numer konta nie jest automatycznie publicznym odnośnikiem, a etykieta nie jest testem. Testem jest to, co umożliwia posiadanie: jeśli znajomość numeru loguje kogoś, pobiera profil połączenia lub autoryzuje urządzenie, numer jest poświadczeniem z cyklem życia. Wykonuję poniższe pięć kontroli za każdym razem, gdy usługa wydaje tożsamość numeryczną i nazywa ją nieszkodliwą. Każda daje wiersz w krótkim protokole, a protokół jest wynikiem, nie wyrokiem o produkcie.

Zinwentaryzuj, co faktycznie daje posiadanie

Zapisz osobno każdą czynność, którą numer odblokowuje. Logowanie do portalu, pobranie pliku konfiguracji, autoryzacja nowego urządzenia i dostarczenie zaakceptowanego loginu tunelu to różne uprawnienia, a usługa może wdrożyć jedno bez pozostałych. Portal, który przyjmuje numer jako jedyne pole, nie mówi nic o tym, jak tunel uwierzytelnia swojego peera później ani jak wyprowadzane są klucze ruchu.

Ogólny model łatwo wyrazić: poświadczenie bearer to takie, którego posiadacz może użyć bez dowodzenia posiadania odrębnego klucza kryptograficznego, i właśnie tę różnicę RFC 6750 wyznacza dla tokenów. To porównanie, a nie twierdzenie, że usługa oparta na numerze wdraża OAuth. Jeśli posiadacz nie potrzebuje niczego więcej, traktuj numer jako sekret bearer i odpowiednio sklasyfikuj resztę projektu.

Chroń go jak sekret, nie jak odnośnik

Przechowywanie wynika z klasyfikacji. Wartość, która loguje, należy do menedżera haseł, a nie do zrzutu ekranu, historii schowka, wiadomości czatu czy notatki w przeglądarce. Zrzuty ekranu to typowy wyciek: numer jest krótki i wygląda nieszkodliwie, więc trafia do wątku pomocy, który przeżywa urządzenie, z którego pochodzi.

Phishing to drugi tryb awarii i nie obchodzi go, jak losowy jest numer. Oszust, który chce wartości, poprosi cię o wklejenie jej do formularza, a poświadczenie, które nigdy nie wygasa i nie ma drugiego składnika, jest tego warte. Docieraj do ścieżki logowania przez zakładkę lub znany adres, a nie przez link w wiadomości, która także prosi o numer.

Traktuj materiał odzyskiwania jako część sekretu. Jeśli operator wydał także kod odzyskiwania, PIN lub adres e-mail, który może zresetować konto, są to odrębne poświadczenia o tym samym wymogu ochrony. Jeden niechroniony kanał resetowania zamienia każdą inną kontrolę w dekorację.

Sprawdzaj odporność na zgadywanie i ograniczanie tempa razem

Długość ma znaczenie tylko obok metody generowania. Długi numer z przewidywalnej sekwencji jest słabszy niż krótka wartość z generatora kryptograficznego, a imponująca liczba cyfr nie dowodzi nieprzewidywalności. Zapytaj, jak generowana jest wartość, zanim zaczniesz rozumować, jak trudno ją odgadnąć.

Sama odporność na zgadywanie nie przetrwa też nieograniczonego tempa prób. Liczą się kontrole wdrożone przez operatora: liczniki nieudanych prób, blokady, ograniczanie na źródło i to, czy błędny numer da się odróżnić od nieistniejącego. Jeśli usługa to obsługuje, jedna nieudana próba pokazuje, jak wygląda błąd i czy pojawia się licznik ponownych prób:

# one attempt, then read the response and any counter or delay
# do not script repeated guesses against a live account
curl -i -X POST https://portal.example.invalid/login -d "account=000000000000"

Zapisz, co ujawnia odpowiedź. Odrębny błąd dla nieznanego konta to wyrocznia enumeracji, nawet gdy numeru nie da się odgadnąć, a to ustalenie należy do protokołu, niezależnie od tego, czy możesz je naprawić po stronie klienta.

Zaplanuj rotację i unieważnianie, zanim będą potrzebne

Znajdź obsługiwany proces dla zgubionego lub ujawnionego numeru i zapisz go, póki wszystko działa. Czy poświadczenie konta da się w ogóle wymienić? Czy wymiana unieważnia już zarejestrowane urządzenia, aktywne sesje lub pobraną konfigurację? Jakiego materiału odzyskiwania wymaga proces? Usługa bez zależności od e-maila może przenieść więcej odpowiedzialności za odzyskiwanie na użytkownika, co czyni procedurę ważniejszą, a nie mniej ważną.

Oddziel wymianę konta od unieważnienia poświadczenia. Jeśli numer autoryzuje pobranie klucza, certyfikatu lub profilu, wymiana numeru może pozostawić pobrany materiał ważnym, a unieważnienie pobranego materiału może być inną operacją z innym właścicielem. Nie zakładaj, że jedno zmienione pole kończy każde połączenie; sprawdź rzeczywisty model operatora i zapisz, gdzie to zweryfikowałeś.

Udokumentuj decyzję i sprawdź ją ponownie później

Prowadź jednostronicowy protokół dla każdej usługi: jakie uprawnienia daje numer, gdzie jest przechowywany, kto może go zresetować, jakie dowody użycia istnieją i co zrobiłbyś w pierwszej godzinie po ujawnieniu. Ten protokół zamienia spór o terminologię w decyzję, którą ktoś może zaudytować.

Twierdzenia o prywatności potrzebują własnego zakresu. Losowo wygenerowany numer może nadal być stabilnym identyfikatorem łączącym zdarzenia konta w czasie; nieprzewidywalność nie jest niepowiązywalnością i żadna z tych właściwości nie mówi nic o przechowywanych metadanych sieciowych. Porównuj kompletne projekty, zamiast liczyć pola na ekranie logowania.

Zanim to zapiszesz:

  • Wymienione są wszystkie uprawnienia, które daje numer, w tym pobierania i autoryzacja urządzeń.
  • Kanały przechowywania i odzyskiwania są chronione według tego samego standardu co sam numer.
  • Metoda generowania i limity tempa są znane, a nie założone na podstawie długości.
  • Istnieje procedura wymiany i procedura unieważnienia, i wiesz, która unieważnia którą.
  • Protokół wskazuje, kto może zresetować wartość i jakie dowody pozostają po użyciu.

Powiązane artykuły