Warum speichern Sitzungen auf dem Server statt in einem Cookie?

8

Ich benutze Flask schon seit einiger Zeit und ich genieße den Rahmen sehr. Eine Sache, die ich nicht verstehe, ist, dass sie an fast allen anderen Orten über das Speichern der Sitzung auf dem Server und der Sitzungs-ID auf dem Client sprechen, die dann die Sitzung identifizieren würde. Jedoch nach der Verwendung von Kolben, fühle ich nicht die Notwendigkeit, dies zu tun. Die Sitzung als Cookie auf dem Client kryptografisch zu speichern dient meinem Zweck und scheint auch ziemlich sicher zu sein. Das einzige Ding ist, dass ich die Sitzungsschlüssel für zB nicht verschlüsseln kann:

%Vor%

würde als

erscheinen %Vor%

in dem auf dem Client gespeicherten Cookie. Aber wie wäre das denn, wie es noch verschlüsselt ist. Ich bin mir sicher, dass die Leute hier die Dinge viel besser kennen als ich, also bitten Sie jemanden, bitte, klarzustellen :-)

    
Rasmus 16.10.2010, 12:57
quelle

4 Antworten

14

Selbst wenn Ihre Daten verschlüsselt sind, kann der Benutzer seinen Cookie immer noch in einen vorherigen Zustand zurückversetzen (es sei denn, Sie beginnen mit der Kodierung von Einmal-IDs usw.)

z.B. Cookie sagt, dass der Benutzer 100 Credits hat, der Nutzer 100 Credits ausgibt, sie erhalten einen neuen Cookie, der besagt, dass sie 0 Credits haben. Sie könnten dann ihren vorherigen Cookie wiederherstellen (mit 100 Credits).

Je nachdem, wie Sie den Cookie verschlüsseln, kann der Benutzer möglicherweise auch Schlüssel löschen, gefälschte Daten usw. einfügen.

    
Nick 16.10.2010, 13:16
quelle
7

Wenn die Sitzungsdaten auf dem Server benötigt werden, ist es sinnvoll, sie auf dem Server zu speichern. Es hält die Datenmenge, die vom Client hin und her gesendet wird, niedrig. Außerdem haben Cookies eine Begrenzung der Datenmenge, die sie speichern können.

    
Ned Batchelder 16.10.2010 13:05
quelle
6

Zusätzlich zu den oben bereits erwähnten Punkten

  1. Benutzer können Cookies mithilfe ihrer Browsereinstellungen deaktivieren. Viele Antivirus-Scanner scannen und kennzeichnen auch Cookies als Risiko, was dazu führen kann, dass Cookies auf dem Computer des Benutzers nicht erlaubt werden.

  2. Cookies können vom Benutzer selbst mitten in der Sitzung gelöscht werden. (In der Tat, ich habe versehentlich das neulich getan, als einer meiner PC-Scans die Tracking-Cookies aufgelistet ... und ich habe nur auf "Clean" geklickt und sie waren alle weg). Falls der Benutzer die Cookies löscht, geht der Benutzerstatus verloren.

Wenn Sie Cookies verwenden, um den gesamten Status zu verwalten, sind Sie immer von der Client-Umgebung und ihren Einstellungen abhängig. In diesem Fall werden Sie wahrscheinlich zumindest einen Rückfallmechanismus benötigen, falls die Cookies gelöscht / deaktiviert werden usw., damit Ihre Anwendung korrekt funktioniert.

    
InSane 16.10.2010 13:38
quelle
1

Die SecureCookie-Implementierung Flask verwendet die Werte nicht zu verschlüsseln . Das einzige, was sichergestellt wird, ist, dass der Benutzer das Cookie nicht ändern kann, ohne das von der Anwendung verwendete Geheimnis zu kennen.

    
DasIch 30.10.2010 08:21
quelle

Tags und Links