Jest to gałąź innym pytaniem: What is the best way to implement "remember me" for a website?Pozostań zalogowany Najlepsze wskazówki: w jaki sposób nazwa użytkownika w pliku cookie zwiększa bezpieczeństwo?
Górny odpowiedź jest wdrożenie tego: http://jaspan.com/improved_persistent_login_cookie_best_practice
Podsumowanie:
Użyj liczbę losową jako seria Token, a inny jako token logowania. Umieścić je w pliku cookie Stay Stay, wraz z nazwą użytkownika. Przypisanie drugiego, normalnego pliku cookie sesji. Za każdym razem, gdy użytkownik dotrze do użytkownika bez pliku cookie sesji, zużyje plik cookie Stay Logged In. Wydaj nowy, tym razem z nowym losowym tokenem logowania, zachowując token Serii .
Dlaczego warto podać nazwę użytkownika? Jak to pomaga? Token Series powinien wystarczyć do zidentyfikowania użytkownika i serii. Token Series został dodany w tym podejściu, aby zapobiec atakowi DoS, w którym osoba atakująca po prostu zgaduje wszystkie nazwy użytkowników i jednocześnie uderza w witrynę, rejestrując wszystkich. Ale dlaczego ma sens pozostawienie nazwy użytkownika w ogóle?
AFAICT w tym nazwa użytkownika robi dwie rzeczy. Po pierwsze, utrudnia DoS zapamiętanie loginu przez wysyłanie losowych Tokenów. (DoS powiedzie się tylko wtedy, gdy odgadniesz poprawny Token Serii _i jego powiązaną nazwę użytkownika.) Po drugie, nazwa użytkownika broni przed niewinnymi kolizjami między Tokenami Serii wydanymi różnym użytkownikom. Bez nazwy użytkownika kolizja Tokenów seryjnych wyglądałaby jak wskazówka kradzieży. Oczywiście, jeśli możesz zagwarantować, że każdy nowy Token Serii będzie unikalny spośród wszystkich wciąż ważnych, wcześniej wydanych Tokenów Series, to nie jest to problem. – ottomeister
Ma to jak na razie największy sens. W bardzo rozproszonym systemie, w którym sprawdzanie unikalności dla Tokenów Series nie jest wydajne, rozumiem, dlaczego należy podać nazwę użytkownika lub, co wolę, skrót nazwy użytkownika. Ale jeśli Tokeny Series są unikatowe, równie dobrze mogą odjąć nazwę użytkownika od potencjalnych napastników. –
Czy nie lepiej używać identyfikatora użytkownika zamiast nazwy użytkownika ze względu na wydajność porównywania liczb całkowitych vs. ciągów znaków? – axelbrz