2008-12-29 3 views
7

Der In-Prozess-Sitzungsstatus ist schlecht, wenn es darum geht, Webanwendungen zu skalieren (funktioniert nicht gut mit Clustern, bombardiert sich, wenn der Server wiederverwendet wird).Verwenden von Cookies für den Web-Sitzungsstatus - Was sind die Fallstricke?

Vorausgesetzt, Sie müssen nur eine kleine Menge an Informationen im Sitzungsstatus speichern, was ist der Nachteil der Verwendung von verschlüsselten Cookie-Elementen für diesen Zweck anstelle von bestimmten Statusservern/db's?

Offensichtlich verursacht die Verwendung von Cookies einen geringen Netzwerkaufwand, und Sie gehen davon aus, dass Cookies auf dem Client-Browser/mobilen Gerät aktiviert sind.

Welche anderen Fallstricke können Sie mit Ansatz sehen?

Ist dies eine gute Option für einfache, skalierbare und robuste Sitzungen?

+0

hängt davon ab, was versucht wurde zu speichern – Shawn

+0

Eine sehr kleine Menge an Informationen, da der Cookie verschlüsselt würde der eigentliche Cookie-Inhalt sollte nicht so wichtig sein, wichtiger wird die Größe sein. Gedanken? –

Antwort

7

Dies ist ein hervorragender Ansatz für einfache, skalierbare und robuste Sitzungen. Natürlich ist die Qualität Ihres Krypto wichtig, und das ist oft etwas, das sich oft als schwierig erweist, um richtig zu werden, aber es ist möglich.

ich nicht zustimmen einige der anderen Plakate mit:

Alle Replay-Angriff, der gegen einen verschlüsselten Cookie-Wert gestartet werden kann, kann als Cookie gespeichert wird gegen einen Sitzungsschlüssel gestartet werden. Verwenden Sie https, wenn dies von Bedeutung ist.

Sitzungsdaten, die in einem Statusserver oder einer Datenbank gespeichert sind, gehen ebenfalls verloren, wenn der Cookie gelöscht wird. Wenn der Sitzungsschlüssel verloren geht, kann die Sitzung nicht mehr abgerufen werden.

2

Ein weiterer Nachteil ist, dass sie gestohlen und auf Ihrer Website wiedergegeben werden können.

BTW: Anstatt einige Sachen im Cookie zu speichern, sollten Sie auch einen Schlüssel im Cookie speichern und etwas wie memcached verwenden (memcached funktioniert serverübergreifend).

+0

Guter Punkt. Kann dem mit einer verschlüsselten Timestamp-Cookie-Komponente begegnet werden? –

+0

Das sollte effektiv sein. – yfeldblum

2

Nun, normalerweise wird ein Cookie für die Sitzungs-ID verwendet. Solange die Menge der Informationen klein ist, wäre es eine gute Option, die Informationen im Cookie zu speichern, obwohl Sie nichts Wertvolles speichern sollten CC-Nummern, SSN, etc.) sollten wirklich in einem Cookie gespeichert werden, auch wenn es verschlüsselt ist.

Ich bin kein Experte, aber nach meiner Erfahrung habe ich Folgendes gefunden (zumindest mit PHP und ASP.Net).

Plätzchen

  • [pro] gut Scales, da sie bei jeder Anfrage gesendet hat
  • [pro] Cookies können nur über eine SSL-Verbindung
  • [vorzulegen erforderlich pro] Kann Cross-Server-Technologien verwendet werden, und Cross-Server-Maschinen
  • [con] Daten werden bei jeder Anfrage und Antwort übertragen se
  • [con] Benötigt auf Browser aktiviert sein,

Staats Server/DB

  • [pro] Daten nur auf dem Server gespeichert
  • [pro ] Daten bleiben bestehen, selbst wenn der Benutzer Cookies löscht
  • [pro] Kann Cross-Server-Technologien verwendet werden
  • [con] eine ID auf Anfrage/Antwort übergeben werden muss (also müssen Cookies oder an jede URL angehängt)
  • [con] skaliert nicht gut in Standard-Modi, aber wenn eine ganze Maschine (n) speziell und ausschließlich für den Staat gewidmet werden kann, ist dies kein großes Problem. Viele andere Skalierungstechniken, die für Skalierbarkeit verfolgt werden können.
  • [con] Erfordert eine Sitzungs-ID-Variable, die über URL oder Cookie oder auf andere Weise weitergegeben wird, um den Benutzer an die Daten gebunden zu halten.
+3

Sie haben die größte Con des staatlichen Servers vermisst: ERFORDERT NOCH EINEN COOKIE. –

+0

Gültiger Punkt, ich werde aktualisieren, aber ich ging für die Tatsache, dass die Daten selbst nicht in einem Cookie gespeichert ist. –

Verwandte Themen