Web authentication state-Session vs Cookie?

Jaki jest najlepszy sposób uwierzytelniania i ŚLEDZENIA STANU uwierzytelniania użytkowników od strony do strony? Niektórzy mówią o stanie sesji, inni o ciasteczkach?

Czy mogę po prostu użyć zmiennej sesji, która ma ID użytkownika i po uwierzytelnieniu, zainstalować niestandardową klasę użytkownika, która ma informacje o użytkowniku. Następnie na każdej stronie sprawdzić, czy zmienna sesji jest nadal aktywna i uzyskać dostęp do podstawowych danych użytkownika z obiektu User?

Jakieś pomysły? Jakieś dobre przykłady?

Author: Suraj Jain, 2008-12-10

5 answers

Nie ma idealnego sposobu, aby to zrobić. Jeśli przechowujesz go w pliku cookie, weźmiesz flak, że pliki cookie mogą zostać skradzione. Jeśli przechowujesz go w sesji, weźmiesz Flaka, ponieważ sesje mogą zostać przechwycone.

Osobiście uważam, że sesja jest trochę bardziej niezawodna, ponieważ jedyną rzeczą przechowywaną na kliencie jest klucz sesji. Rzeczywiste dane pozostają na serwerze. Gra w karty trochę bliżej klatki piersiowej, jeśli wolisz. Jednak to tylko moje preferencje i dobre haker byłby w stanie ominąć tandetne zabezpieczenia bez względu na to.

Bez względu na to, co robisz, nie próbuj tego realizować samodzielnie. Pomylisz się. Użyj systemu uwierzytelniania dostarczonego przez konkretną platformę. Musisz również upewnić się, że masz odpowiednie środki bezpieczeństwa chroniące token uwierzytelniania.

 16
Author: Joel Coehoorn,
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-01-22 14:44:12

Problem z preferowaniem sesji nad plikami cookie dla "bezpieczeństwa" polega na tym, że sesje używają plików cookie do identyfikacji użytkownika, więc każdy problem z plikami cookie jest obecny z sesjami.

Jedną z rzeczy, o których należy pamiętać przy użyciu sesji, jest lokalizacja danych. Jeśli planujesz skalować do więcej niż jednego serwera www w dowolnym momencie, musisz być bardzo ostrożny, przechowując duże ilości danych w obiektach sesji.

Ponieważ używasz. NET, będziesz musiał napisać własnego dostawcy sklepu sesji aby sobie z tym poradzić, ponieważ InProc nie będzie skalował po 1 serwerze, dostawca DB jest całkowicie złym pomysłem (chodzi o to, aby unikać odczytów DB podczas skalowania, a nie dodawać więcej), a StateServer ma wiele problemów z pojemnością. (W przeszłości korzystałem z dostawcy memcached session store z pewnym sukcesem, aby zwalczyć ten problem).

Poszukam w google podpisanych plików cookie i przyjrzę się ich używaniu zamiast zwykłych plików cookie lub sesji. Rozwiązuje wiele problemów związanych z bezpieczeństwem i usuwa problemy lokalowe z sesjami. Pamiętaj, że przychodzą i z powrotem na każde żądanie, więc przechowuj dane oszczędnie.

 25
Author: Todd Berman,
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
2008-12-10 16:17:37

Nie wiem, czy jest to najlepszy sposób, aby to zrobić, ale jesteśmy zadowoleni ze sposobu, w jaki to robimy.

Mamy niestandardowy obiekt użytkownika, który tworzymy, gdy użytkownik uwierzytelni się, następnie używamy sesji do utrzymywania tego obiektu w całej aplikacji.

W niektórych aplikacjach łączymy to z wykorzystaniem plików cookie w celu ciągłego przedłużania sesji.

 1
Author: Victor,
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
2008-12-10 16:06:07

Pliki cookie i sesje same w sobie nie są naprawdę wystarczające. Są to narzędzia do śledzenia użytkownika i tego, co robi, ale naprawdę musisz pomyśleć o użyciu bazy danych do utrzymywania informacji o użytkowniku, które można również wykorzystać do zabezpieczenia aplikacji.

 0
Author: Jeff.Crossett,
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
2008-12-11 01:06:04

Sesje to ciasteczka...

 -3
Author: Shawn,
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-03-10 15:43:02