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

Author: Jonas, 2009-07-02

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.

 15
Author: Nick Fortescue,
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

 20
Author: Paul Dixon,
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

 5
Author: David Waters,
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,

 3
Author: Vinko Vrsalovic,
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.

 0
Author: Sionide21,
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.

 0
Author: Grouchal,
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