40 Stimmen

Was ist der Unterschied zwischen einer Sitzung und einem Cookie?

Was ist der Unterschied zwischen einer Sitzung und einem Cookie?

Unter welchen Umständen sollten sie eingesetzt werden?

71voto

cgreeno Punkte 30732

Sitzungen

Sitzungen pro Benutzer im Speicher gespeichert werden (oder eine Alternative Session-Status ) auf dem Server. Sitzungen verwenden ein Cookie( Sitzungsschlüssel ), um den Benutzer an die Sitzung zu binden. Das bedeutet, dass keine "sensiblen" Daten in dem Cookie auf dem Rechner des Nutzers gespeichert werden.

Sitzungen werden im Allgemeinen verwendet, um den Status zu erhalten, wenn Sie durch eine Website navigieren. Sie können aber auch dazu verwendet werden, häufig verwendete Objekte zu speichern. Nur wenn der Session-Status auf InProc gesetzt ist, wenn er auf einen anderen Session-State-Modus muss das Objekt auch serialisierbar sein.

Session["userName"] = "EvilBoy";

if(Session["userName"] != null)
  lblUserName.Text = Session["userName"].ToString();

Cookies

Cookies werden pro Benutzer auf dem Rechner des Benutzers gespeichert. Ein Cookie ist normalerweise nur eine kleine Information. Cookies werden in der Regel für einfache Benutzereinstellungen, Farbpräferenzen usw. verwendet. Es sollten niemals sensible Informationen in einem Cookie gespeichert werden.

Sie können sich nie ganz darauf verlassen, dass ein Cookie nicht von einem Benutzer oder einer externen Quelle manipuliert wurde. Wenn Ihnen jedoch die Sicherheit ein großes Anliegen ist und Sie Cookies verwenden müssen, können Sie Ihre Cookies entweder verschlüsseln oder so einstellen, dass sie nur über SSL übertragen werden. Ein Benutzer kann seine Cookies jederzeit löschen oder gar nicht erst zulassen. Sie können sich also nicht darauf verlassen, dass sie vorhanden sind, nur weil ein Benutzer Ihre Website in der Vergangenheit besucht hat.

//add a username Cookie
Response.Cookies["userName"].Value = "EvilBoy";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(10);
//Can Limit a cookie to a certain Domain
Response.Cookies["userName"].Domain = "Stackoverflow.com";

//request a username cookie
if(Request.Cookies["userName"] != null)
   lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

Nebenbemerkung

Es ist erwähnenswert, dass ASP.NET auch Folgendes unterstützt kochfrei staatliche Verwaltung

1 Stimmen

Außerdem wird die Sitzung bei jeder Anfrage durch einen Cookie identifiziert. Ohne Cookie (oder URL-Identifikator, schlecht!) kann die Sitzung nicht nachverfolgt werden.

0 Stimmen

Gute Antwort, aber ich habe nicht hochgestuft, da er eine allgemeine Frage gestellt hat und Ihre Antwort einige Kenntnisse über die Microsoft-Plattformen voraussetzt.

1 Stimmen

@Brian jedoch... die Frage ist mit C# und asp.net getaggt, um fair zu sein :-) Dennoch sind Cookies und Sessions ein allgemeineres Thema, aber das Beispiel ist für den OP geeignet, also habe ich hochgestimmt

23voto

Canavar Punkte 46926

Keks ist ein clientseitiger Speicher für Ihre Variablen. Sie wird auf dem Client-Rechner vom Browser physisch gespeichert. Ihr Anwendungsbereich ist maschinenübergreifend. Verschiedene Benutzer auf demselben Rechner können dasselbe Cookie lesen.

Aus diesem Grund :

  1. Sie sollten keine sensiblen Daten auf Cookies speichern.
  2. Sie sollten keine Daten speichern, die zu einem einzigen Benutzerkonto gehören.
  3. Das Cookie hat keine Auswirkungen auf die Server-Ressourcen.
  4. Das Cookie läuft zu dem von Ihnen angegebenen Datum ab.

Sitzung ist ein serverseitiger Speicher für Ihre Variablen. Standardmäßig werden sie im Speicher des Servers gespeichert. Sie können sie jedoch so konfigurieren, dass sie im SqlServer gespeichert wird. Der Anwendungsbereich ist browserweit. Ein und derselbe Benutzer kann zwei oder mehr Browser verwenden und jeder Browser hat seine eigene Sitzung.

Aus diesem Grund :

  1. Sie können sensible Daten in der Sitzung speichern.
  2. Sie sollten nicht alles in einer Sitzung speichern, da dies eine Verschwendung von Serverressourcen darstellt.
  3. Nach dem Schließen des Browsers durch den Benutzer werden durch die Sitzungszeitüberschreitung alle Informationen gelöscht. (Standard ist 20 Minuten)

0 Stimmen

Kurz und bündig :D

11voto

Karl Thorwald Punkte 331

Ein Cookie ist eine Identifizierungszeichenfolge, die von einem Server (der eine Domäne hat) im Browser des Benutzers gespeichert wird, der den Server/die Domäne besucht.

Eine Sitzung ist eine Einheit von Variablen, Zuständen und Einstellungen, während ein bestimmter Benutzer innerhalb eines bestimmten Zeitraums auf einen Server/eine Domäne zugreift. Alle Sitzungsinformationen werden im traditionellen Modell auf dem Server gespeichert (!)

Da viele Benutzer gleichzeitig einen Server/Domain besuchen können, muss der Server in der Lage sein, viele verschiedene gleichzeitige Sitzungen zu unterscheiden und immer die richtige Sitzung dem richtigen Benutzer zuzuweisen. (Und kein Benutzer darf die Sitzung eines anderen Benutzers "stehlen")

Dies geschieht über das Cookie. Das im Browser gespeicherte Cookie, das in diesem Fall eine zufällige Kombination wie s73jsd74df4fdf sein sollte (damit es nicht erraten werden kann), wird bei jeder Anfrage des Browsers an den Server gesendet, und der Server kann die richtige Sitzung für seine Antworten (Seitenaufrufe) zuordnen und verwenden

Das Cookie ermöglicht es dem Server, den Browser/Benutzer zu erkennen. Die Sitzung ermöglicht es dem Server, Informationen zwischen verschiedenen Seitenaufrufen zu speichern.

1 Stimmen

Ich habe dies hochgestuft, aber warum Community-Wiki? Es ist eine absolut gültige Antwort zum Thema Programmierung.

3voto

Shankar kumar Punkte 41

Sitzungen sind nicht darauf angewiesen, dass der Benutzer ein Cookie zulässt. Sie funktionieren stattdessen wie ein Token, das den Zugriff und die Weitergabe von Informationen ermöglicht, solange der Nutzer seinen Browser geöffnet hat. Das Problem bei Sitzungen ist, dass beim Schließen des Browsers auch die Sitzung verloren geht. Wenn Sie also eine Website haben, die eine Anmeldung erfordert, kann diese nicht wie ein Cookie als Sitzung gespeichert werden, und der Benutzer wäre gezwungen, sich bei jedem Besuch neu anzumelden.

2voto

Joe Punkte 4801

Es ist möglich, beides zu haben: ein Datenbank-Primärschlüssel wird gehasht und in einer Nachschlagetabelle gespeichert: dann wird der Hash auf dem Client als Cookie gespeichert. Sobald der Hash-Cookie (hahhahaha :) übermittelt wird, wird der entsprechende Primärschlüssel nachgeschlagen, und der Rest der Details wird in einer anderen Tabelle der Server-Datenbank mit ihm verknüpft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X