Różnice między plikami cookie a sesjami?

154

Szkolę się w tworzeniu stron internetowych i uczę się o JSP i serwletach . Mam pewną wiedzę HttpSession- wykorzystałem ją w niektórych moich przykładowych projektach.

W przeglądarkach widziałem opcję „usuwania plików cookie”. Jeśli usunę pliki cookie, usunie HttpSessionrównież.

Czy pliki cookie i sesja są takie same? Jakie są między nimi różnice?

czarny tygrys
źródło
Zobacz także to pytanie: < stackoverflow.com/questions/356562/… > W szczególności uwagi dotyczące podpisanych plików cookie.
Joel Coehoorn,
Myślę, że druga odpowiedź na to pytanie jest bardziej trafna. Jeśli wybierzesz tę odpowiedź jako najlepszą, wiele osób ją przeczyta.
Suraj Jain

Odpowiedzi:

180

Sesje to pliki po stronie serwera, które zawierają informacje o użytkowniku, natomiast pliki cookie to pliki po stronie klienta zawierające informacje o użytkowniku. Sesje mają unikalny identyfikator, który przypisuje je do określonych użytkowników. Ten identyfikator można przekazać w adresie URL lub zapisać w pliku cookie sesji.

Większość nowoczesnych witryn stosuje drugie podejście, zapisując identyfikator w pliku cookie zamiast przekazywać go w adresie URL (co stwarza zagrożenie bezpieczeństwa). Prawdopodobnie korzystasz z tego podejścia nie wiedząc o tym, a usuwając pliki cookie, skutecznie usuwasz odpowiadające im sesje, usuwając unikalny identyfikator sesji zawarty w plikach cookie.

Eran Galperin
źródło
10
przekazując go w adresie URL (co stwarza zagrożenie bezpieczeństwa). W rzeczywistości oba podejścia wiążą się z zagrożeniami bezpieczeństwa (różne). Tajny identyfikator w adresie URL można zabezpieczyć, jeśli zostanie wykonany prawidłowo i jeśli użytkownik zrozumie, że adres URL jest tajny i nie może być nigdy opublikowany na forum publicznym.
curiousguy
1
„Identyfikator można przekazać w adresie URL lub zapisać w pliku cookie sesji”. . Gdzie? po stronie klienta czy serwera? dziękuję za dodatkowe wyjaśnienie.
Adib Aroui
4
@whitelettersandblankspaces Plik cookie sesji jest przechowywany na kliencie (a jego wartość zawiera unikalny identyfikator sesji, który jest wysyłany z każdym żądaniem odwzorowania sesji przeglądarki na sesję użytkownika na serwerze).
WynandB
306

Plik cookie to po prostu krótki ciąg tekstowy przesyłany tam iz powrotem między klientem a serwerem. Możesz przechowywać name=bob; password=asdfasplik cookie i przesyłać go tam iz powrotem, aby zidentyfikować klienta po stronie serwera. Możesz myśleć o tym jako o wymianie z kasjerem bankowym, który nie ma pamięci krótkotrwałej i potrzebuje Cię do identyfikacji dla każdej transakcji. Oczywiście używanie pliku cookie do przechowywania tego rodzaju informacji jest strasznie niepewne. Pliki cookie mają również ograniczony rozmiar.

Teraz, kiedy kasjer bankowy wie o swoim problemie z pamięcią, może zapisać twoje informacje na kartce papieru i przypisać ci krótki numer identyfikacyjny. Następnie zamiast podawać numer konta i prawo jazdy dla każdej transakcji, możesz po prostu powiedzieć „Jestem klientem 12”

Przekładanie tego na serwery sieciowe: serwer przechowuje stosowne informacje w obiekcie sesji i tworzy identyfikator sesji, który odeśle z powrotem do klienta w pliku cookie. Gdy klient odsyła plik cookie, serwer może po prostu wyszukać obiekt sesji za pomocą identyfikatora. Jeśli więc usuniesz plik cookie, sesja zostanie utracona.

Inną alternatywą jest użycie przez serwer przepisywania adresu URL w celu wymiany identyfikatora sesji.

Załóżmy, że masz link - www.myserver.com/myApp.jsp możesz przejść przez stronę i przepisać każdy adres URL na www.myserver.com/myApp.jsp?sessionID=asdflub nawet www.myserver.com/asdf/myApp.jspi wymienić identyfikator w ten sposób. Ta technika jest obsługiwana przez kontener aplikacji sieci Web i jest zwykle włączana przez ustawienie konfiguracji do używania sesji bez plików cookie.

Chris Cudmore
źródło
29
To wspaniałe wyjaśnienie zakorzenione w wielkiej analogii do świata rzeczywistego. Ta odpowiedź powinna być zdecydowanie bardziej przychylna. Bardzo przystępny dla początkujących, którzy najczęściej zadają takie pytanie.
user798719
2
Co się stanie, jeśli jestem użytkownikiem i ktoś inny pozna mój identyfikator sesji?
Maria Ines Parnisari
3
@ I19 Możliwe, że podszyją się pod Ciebie. Stało się to w scenariuszach hazardu online - podsłuchuj hotelowe wifi, ukradnij identyfikator sesji i uzyskaj dostęp do konta. Zabezpieczenie sesji to zupełnie inna historia.
Chris Cudmore
2
Więc kto pierwszy tworzy plik cookie? Serwer czy klient? Czy może to zależy od aplikacji? (Powiedziałbym, że serwer, ponieważ w przeciwnym razie stwarza zagrożenia dla bezpieczeństwa, ale myślę, że warto o tym wspomnieć?)
nha
4
@nha Serwer tworzy sesję i przekazuje ją w odpowiedzi za pomocą pliku cookie. Sesja jest tworzona w zależności od logiki aplikacji, kiedy ma zostać utworzona. Klient może również utworzyć plik cookie, ale może to nie być zbyt przydatne w scenariuszu identyfikacji sesji, ponieważ serwer może nie wiedzieć, co reprezentuje wartość w sesji.
Azeem,
4

Pliki cookie i sesja przechowują informacje o użytkowniku (aby żądanie HTTP było stanowe), ale różnica polega na tym, że pliki cookie przechowują informacje po stronie klienta (przeglądarce), a sesje przechowują informacje po stronie serwera. Plik cookie jest ograniczony w tym sensie, że przechowuje informacje o ograniczonych użytkownikach i przechowuje tylko ograniczone treści dla każdego użytkownika. Sesja nie jest w ten sposób ograniczona.

sanjay singh
źródło
1

Cookie to w zasadzie globalna tablica dostępna w przeglądarkach internetowych. Często używany do wysyłania / odbierania wartości. działa jako mechanizm przechowywania w celu uzyskania dostępu do wartości między formularzami. Pliki cookie mogą zostać wyłączone przez przeglądarkę, co powoduje ograniczenie ich używania w porównaniu z sesją.

Sesję można zdefiniować jako coś pomiędzy zalogowaniem się a wylogowaniem. czas pomiędzy zalogowaniem się a wylogowaniem użytkownika jest sesją. Sesja przechowuje wartości tylko na czas sesji, tj. Przed wylogowaniem. Sesje służą do śledzenia aktywności użytkownika po zalogowaniu.

RishikeshD
źródło
0

Google JSESSIONID . To wyjaśnia, w jaki sposób Servlet API początkowo używa ponownego zapisu adresu URL, a następnie, jeśli pliki cookie są włączone, plików cookie do zarządzania sesjami.

Protokół HTTP jest bezstanowy, więc przeglądarka klienta musi wysyłać identyfikator swojej sesji do serwera przy każdym żądaniu. Serwer, w jakikolwiek sposób, używa tego identyfikatora do pobierania danych z tej sesji, udostępniając je przez cały czas trwania żądania.

Nick Holt
źródło
0

Sesja w Asp.net:

1. Utrzymuje dane w całej aplikacji.

2. Utrwala dane, jeśli bieżąca sesja jest aktywna. Jeśli potrzebujemy dostępu do niektórych danych z wielu działań i widoków kontrolerów, sesja jest sposobem na przechowywanie i odzyskiwanie danych.

3. Sesje to pliki po stronie serwera, które zawierają informacje o użytkowniku. [Sesje to unikalny identyfikator, który przypisuje je do konkretnych użytkowników]

Przekładanie tego na serwery sieciowe: serwer przechowuje stosowne informacje w obiekcie sesji i tworzy identyfikator sesji, który odeśle z powrotem do klienta w pliku cookie. Gdy klient odsyła plik cookie, serwer może po prostu wyszukać obiekt sesji za pomocą identyfikatora. Jeśli więc usuniesz plik cookie, sesja zostanie utracona.

Vicky
źródło
0

Cookie to sposób na realizację sesji między klientem a serwerem, w ten sposób informacje o sesji przechowywane w pliku cookie. Ale to nie jedyny sposób na przechowywanie informacji o sesji. Innym sposobem jest przechowywanie informacji o sesji w adresie URL.

mniej niesamowite
źródło
0

Pliki cookie są przechowywane w przeglądarce jako format pliku tekstowego. Przechowywane są w nim ograniczone ilości danych. Dopuszcza tylko 4kb [4096 bajtów] . Zmienna $ _ COOKIE nie będzie przechowywać wielu plików cookie o tej samej nazwie

możemy łatwo uzyskać dostęp do wartości plików cookie, więc jest to mniej bezpieczne . funkcja setcookie () musi pojawić się PRZED

<html> 

etykietka.

Sesje są przechowywane po stronie serwera, przechowują nieograniczoną ilość danych, przechowują zmienną wielokrotną w sesjach. nie mamy łatwego dostępu do wartości plików cookie, więc jest to bezpieczniejsze .

Linki: różnica między plikami cookie a sesjami

Elangovan
źródło
Cóż, w rzeczywistości możesz przechowywać wiele danych w plikach cookie. Ponadto sesje nie mogą tak naprawdę przechowywać nieograniczonej ilości danych. Masz dość dużo pamięci RAM.
Koray Tugay