Unterschiede zwischen Cookies und Sitzungen?

154

Ich trainiere in Webentwicklung und lerne etwas über JSP & Servlets . Ich habe einige Kenntnisse über HttpSession- ich habe es in einigen meiner Beispielprojekte verwendet.

In Browsern habe ich die Option "Cookies löschen" gesehen. Wenn ich die Cookies lösche, werden auch die gelöscht HttpSession.

Sind Cookies und Sitzung gleich? Was sind die Unterschiede zwischen ihnen?

schwarzer Tiger
quelle
Siehe auch diese Frage: < stackoverflow.com/questions/356562/… > Insbesondere die Anmerkungen zu signierten Cookies.
Joel Coehoorn
Ich denke, die zweite Antwort auf diese Frage ist passender. Wenn Sie diese als beste Antwort auswählen, werden viele Leute sie lesen.
Suraj Jain

Antworten:

180

Sitzungen sind serverseitige Dateien, die Benutzerinformationen enthalten, während Cookies clientseitige Dateien sind, die Benutzerinformationen enthalten. Sitzungen haben eine eindeutige Kennung, die sie bestimmten Benutzern zuordnet. Diese Kennung kann in der URL übergeben oder in einem Sitzungscookie gespeichert werden.

Die meisten modernen Websites verwenden den zweiten Ansatz, bei dem die Kennung in einem Cookie gespeichert wird, anstatt sie an eine URL zu übergeben (was ein Sicherheitsrisiko darstellt). Sie verwenden diesen Ansatz wahrscheinlich, ohne es zu wissen, und durch Löschen der Cookies löschen Sie effektiv die übereinstimmenden Sitzungen, wenn Sie die in den Cookies enthaltene eindeutige Sitzungskennung entfernen.

Eran Galperin
quelle
10
" Weitergabe an eine URL (die ein Sicherheitsrisiko darstellt). " Tatsächlich weisen beide Ansätze Sicherheitsrisiken auf (unterschiedliche). Die geheime ID in der URL kann sicher gemacht werden, wenn dies ordnungsgemäß durchgeführt wird und wenn der Benutzer versteht, dass die URL geheim ist und niemals in einem öffentlichen Forum veröffentlicht werden kann.
Neugieriger
1
"Die Kennung kann in der URL übergeben oder in einem Sitzungscookie gespeichert werden." . Wo? Client- oder Serverseite? Vielen Dank für die Klarstellung.
Adib Aroui
4
@whitelettersandblankspaces Das Sitzungscookie wird auf dem Client gespeichert (und sein Wert enthält die eindeutige Sitzungskennung, die bei jeder Anforderung zum Zuordnen der Browsersitzung zur Benutzersitzung auf dem Server gesendet wird).
WynandB
306

Ein Cookie ist einfach eine kurze Textzeichenfolge, die zwischen dem Client und dem Server hin und her gesendet wird. Sie können name=bob; password=asdfasin einem Cookie speichern und dieses hin und her senden, um den Client auf der Serverseite zu identifizieren. Sie können sich dies als einen Austausch mit einem Bankangestellten vorstellen, der kein Kurzzeitgedächtnis hat und bei dem Sie sich für jede einzelne Transaktion ausweisen müssen. Natürlich ist die Verwendung eines Cookies zum Speichern dieser Art von Informationen schrecklich unsicher. Cookies sind ebenfalls in der Größe begrenzt.

Wenn der Bankangestellte nun über sein / ihr Gedächtnisproblem Bescheid weiß, kann er / sie Ihre Informationen auf ein Blatt Papier schreiben und Ihnen eine kurze ID-Nummer zuweisen. Anstatt Ihre Kontonummer und Ihren Führerschein für jede Transaktion anzugeben, können Sie einfach "Ich bin Kunde 12" sagen.

Übersetzen auf Webserver: Der Server speichert die relevanten Informationen im Sitzungsobjekt und erstellt eine Sitzungs-ID, die er in einem Cookie an den Client zurücksendet. Wenn der Client das Cookie zurücksendet, kann der Server das Sitzungsobjekt einfach anhand der ID nachschlagen. Wenn Sie also das Cookie löschen, geht die Sitzung verloren.

Eine andere Alternative besteht darin, dass der Server das Umschreiben von URLs verwendet, um die Sitzungs-ID auszutauschen.

Angenommen, Sie hätten einen Link - www.myserver.com/myApp.jsp Sie könnten die Seite durchgehen und jede URL als www.myserver.com/myApp.jsp?sessionID=asdfoder sogar neu schreiben www.myserver.com/asdf/myApp.jspund die Kennung auf diese Weise austauschen. Diese Technik wird vom Webanwendungscontainer ausgeführt und normalerweise durch Festlegen der Konfiguration für die Verwendung von Sitzungen ohne Cookies aktiviert.

Chris Cudmore
quelle
29
Dies ist eine wunderbare Erklärung, die in einer großartigen realen Analogie verankert ist. Diese Antwort sollte viel mehr positiv bewertet werden. Sehr zugänglich für Neulinge, die eine solche Frage am wahrscheinlichsten stellen.
user798719
2
Was passiert, wenn ich ein Benutzer bin und jemand anderes meine Sitzungs-ID kennenlernt?
Maria Ines Parnisari
3
@ I19 Möglicherweise können sie sich als Sie ausgeben. Dies ist in Online-Glücksspielszenarien geschehen - schnüffeln Sie am WLAN des Hotels, stehlen Sie eine Sitzungs-ID und greifen Sie auf das Konto zu. Das Sichern einer Sitzung ist eine ganz andere Geschichte.
Chris Cudmore
2
Wer erstellt den Cookie zuerst? Server oder Client? Oder ist das anwendungsabhängig? (Ich würde Server sagen, da es sonst Sicherheitsbedrohungen darstellt, aber ich denke, es ist erwähnenswert?)
nha
4
@nha Der Server erstellt die Sitzung und übergibt sie in der Antwort mit dem Cookie. Die Sitzung wird abhängig von der Anwendungslogik erstellt, wenn Sie möchten, dass sie erstellt wird. Der Client kann auch ein Cookie erstellen, das jedoch im Szenario der Identifizierung der Sitzung möglicherweise nicht von großem Nutzen ist, da der Server möglicherweise nicht weiß, was der Wert in der Sitzung darstellt.
Azeem
4

Cookies und Sitzungen speichern beide Informationen über den Benutzer (um die HTTP-Anforderung zustandsbehaftet zu machen). Der Unterschied besteht jedoch darin, dass Cookies Informationen auf der Clientseite (Browser) und Sitzungen Informationen auf der Serverseite speichern. Ein Cookie ist in dem Sinne eingeschränkt, dass es Informationen über eingeschränkte Benutzer und nur begrenzte Inhalte für jeden Benutzer speichert. Eine Sitzung ist nicht so begrenzt.

Sanjay Singh
quelle
1

Cookie ist im Grunde ein globales Array, auf das über Webbrowser zugegriffen wird. Oft verwendet, um Werte zu senden / empfangen. Es fungiert als Speichermechanismus für den Zugriff auf Werte zwischen Formularen. Cookies können vom Browser deaktiviert werden, wodurch ihre Verwendung im Vergleich zur Sitzung eingeschränkt wird.

Sitzung kann als etwas zwischen Anmelden und Abmelden definiert werden. Die Zeit zwischen dem Anmelden und Abmelden des Benutzers ist eine Sitzung. Die Sitzung speichert Werte nur für die Sitzungszeit, dh vor dem Abmelden. Sitzungen werden verwendet, um die Aktivitäten des Benutzers zu verfolgen, sobald er sich angemeldet hat.

RishikeshD
quelle
0

Google JSESSIONID . Dies erklärt, wie die Servlet-API zunächst das Umschreiben von URLs verwendet und dann, wenn Cookies aktiviert sind, Cookies zum Verwalten von Sitzungen.

HTTP ist zustandslos, daher muss der Client-Browser bei jeder Anforderung die ID seiner Sitzung an den Server senden. Der Server verwendet diese ID auf irgendeine Weise, um alle Daten für diese Sitzung abzurufen und sie für die Lebensdauer der Anforderung verfügbar zu machen.

Nick Holt
quelle
0

Sitzung in Asp.net:

1. Pflegt die Daten in der gesamten Anwendung.

2.Hält die Daten aufrecht, wenn die aktuelle Sitzung aktiv ist. Wenn wir Daten benötigen, auf die von mehreren Controllern aus zugegriffen werden kann, können Sie in der Sitzung Daten speichern und abrufen.

3. Sitzungen sind serverseitige Dateien, die Benutzerinformationen enthalten. [Sitzungen sind eindeutige Bezeichner, die sie bestimmten Benutzern zuordnen.]

Übersetzen auf Webserver: Der Server speichert die relevanten Informationen im Sitzungsobjekt und erstellt eine Sitzungs-ID, die er in einem Cookie an den Client zurücksendet. Wenn der Client das Cookie zurücksendet, kann der Server das Sitzungsobjekt einfach anhand der ID nachschlagen. Wenn Sie also das Cookie löschen, geht die Sitzung verloren.

Vicky
quelle
0

Cookie ist eine Möglichkeit, die Sitzung zwischen Client und Server zu implementieren. Auf diese Weise werden Sitzungsinformationen in Cookies gespeichert. Dies ist jedoch nicht die einzige Möglichkeit, die Sitzungsinformationen zu speichern. Eine andere Möglichkeit ist das Speichern von Sitzungsinformationen in der URL.

weniger toll
quelle
0

Cookies werden im Browser als Textdateiformat gespeichert. Es wird eine begrenzte Datenmenge gespeichert. Es sind nur 4 KB [4096 Byte] zulässig . Die Variable $ _ COOKIE enthält nicht mehrere Cookies mit demselben Namen

Wir können leicht auf die Cookies-Werte zugreifen. Es ist also weniger sicher. Die Funktion setcookie () muss VOR dem erscheinen

<html> 

Etikett.

Sitzungen werden auf der Serverseite gespeichert. Es wird eine unbegrenzte Datenmenge gespeichert. Es enthält die Mehrfachvariablen in Sitzungen. Wir können nicht einfach auf die Cookie-Werte zugreifen. Es ist also sicherer .

Links: Unterschied zwischen Cookies und Sitzungen

Elangovan
quelle
Nun, tatsächlich können Sie mehrere Daten in Cookies speichern. Außerdem können Sitzungen nicht wirklich unbegrenzte Datenmengen enthalten. Sie sind ziemlich begrenzt durch die Menge an RAM, die Sie haben.
Koray Tugay