"Zapamiętaj Mnie Na Tym Komputerze" - Jak To Powinno Działać?
Patrząc na pliki cookie Gmaila łatwo zobaczyć, co jest przechowywane w pliku cookie "Zapamiętaj mnie". Nazwa użytkownika / token dostępu jednorazowego. Może być zaimplementowany inaczej w przypadkach, gdy nazwa użytkownika jest również tajna. Ale nieważne... rzecz nie jest bardzo wysoki poziom bezpieczeństwa: kradniesz ciastko i jesteś gotowy do drogi.
Moje pytanie jest jednak po stronie funkcjonalnej: kiedy wyczyścić ich żetony dostępu? Jeśli użytkownik zaloguje się Bez klikając "Zapamiętaj mnie" na innej maszynie, powinien unieważnia ich tokeny dostępu na wszystkich maszynach? Pytam o to, jak jest to tradycyjnie realizowane, a także jak powinno być realizowane.
6 answers
Regularnie używam 2 lub 3 maszyn jednocześnie i mam "Zapamiętaj mnie" na wszystkich z nich. Gdyby jeden z nich odłączył Pozostałe, to byłoby bardzo irytujące, więc nie polecam.
Tradycyjnie używa się time-out, plik cookie wygasa po pewnym czasie (lub po wylogowaniu się użytkownika).
Wszystko zależy od Twojego modelu bezpieczeństwa. Jeśli piszesz wewnętrzną aplikację firmową, w której oczekujesz tylko jednego użytkownika na jednym komputerze, możesz chcieć mieć ostrzejsze ograniczenia niż gmail.
Należy również pamiętać o możliwości odmowy usługi - jeśli działanie na jednej maszynie może zmusić inną maszynę do bezużyteczności, może to być wykorzystane, aby zapobiec odzyskaniu kontroli przez uprawnionego użytkownika w niektórych scenariuszach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 14:54:12
Artykuły Persistent Login Best Practicei Improved Persistent Login Best Practice są świetnymi odniesieniami do tego, jak zaimplementować tego rodzaju funkcjonalność.
Zobacz także te pytania Stoskoverflow
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:31
Logowanie z innego komputera nie powinno unieważniać loginu związanego z plikiem cookie na innym komputerze. Jednak jeśli użytkownik loguje się lub " nie ty? Zaloguj się tutaj " powinno to wyczyścić plik cookie, na którym pracuje użytkownik.
Przy okazji kradzież pliku cookie może być utrudniona, nalegając na https i czyniąc go nie do skryptów.
Poprzez dodanie "; HttpOnly " do out put Twojego pliku cookie spowoduje to, że plik cookie będzie niedostępny dla javascript, np.
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2008 10:51:08 GMT
Content-Length: 2838
Możesz przeczytać więcej o tym
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 15:40:48
Ciasteczko remember me powinno również identyfikować urządzenie. Powinno to być związane z maszyną, ponieważ są miejsca, w których chcesz być zapamiętany i inne miejsca ,w których nie (Dom vs praca).
Data ważności jest ustawiana zwykle na rozsądny okres (dwa tygodnie) lub po wyraźnym wylogowaniu się użytkownika z urządzenia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 14:54:44
Chciałbym połączyć każdą sesję z adresem IP. Jeśli token sesji jest wysyłany z innego adresu IP niż ten, który posiadasz, odrzuć go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 14:55:39
Tokeny dostępu powinny być specyficzne dla IP, aby nie mogły być łatwo przenoszone między maszynami.
Powinny być również zaimplementowane w taki sposób, aby użytkownicy mogli zobaczyć, na jakich maszynach mają aktywne tokeny.
Strony, które decydują się wyłączyć token po utworzeniu nowego na innym komputerze-dokonują wyboru, że ich użytkownicy nie będą mieli dostępu do ich usługi na wielu komputerach - lub jeśli tak się stanie - że ich użycie uzasadnia ponowne zalogowanie się.
Polityka zatrudniasz naprawdę zależy od danych, które posiadasz i potrzeb użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-02 14:57:28