2012-04-25 17 views
7

Für den Fall, dass Sie benutzerabhängige Daten in localStorage speichern möchten (z. B. weil mehrere Benutzer denselben Browser für Ihre Site verwenden können), wie gehen Sie normalerweise mit diesem Szenario um?Wie behandelt man localStorage für mehrere Benutzer?

Lassen Sie uns vorstellen, dass ich in der Lage bin, den Benutzer mit etwas wie einem eindeutigen userId auf der Vorderseite zu identifizieren. Ich würde wahrscheinlich etwas wie das folgende tun:

// retrieve the data 
data = JSON.parse(window.localStorage.getItem(userId)) || {}; 

// persist the data 
window.localStorage.setItem(userId, JSON.stringify(data)); 

Ist das eine naive Art, Dinge zu tun?

EDIT: Nachdem es ein wenig mehr geben dachte pro @ MДΓΓ БДL und andere Kommentare, nehmen wir an, die Daten empfindlich ist. In diesem Fall ist das obige Beispiel tatsächlich naiv. Irgendwelche Ideen zum Umgang mit sensiblen Daten in diesem Fall? Oder ist die Antwort vielleicht: Tun Sie es nicht, speichern Sie es auf dem Back-End?

+0

Es ist nicht _secure_, wenn Sie das fragen. –

+0

Wie vertraulich ist die Information? Wenn JSON nicht über einen eigenen Authentifizierungsmechanismus verfügt, kann ein Benutzer seine Identität leicht fälschen. – vol7ron

+0

@ MдΓΓБДLL: Nein, du hast recht in der Tat. Ich habe das noch nicht gut genug durchdacht, aber im Moment nehmen wir an, dass es keine sensiblen Daten sind. Zum Beispiel einige triviale Vorlieben. –

Antwort

4

Sensible Daten sollten nie auf dem Client gespeichert werden. Es sei denn, Sie können die physische Sicherheit des Computers garantieren und/oder garantieren, dass der angemeldete Benutzer auf diesem Computer immer nur derjenige sein wird, der den Computer verwendet (beides ist normalerweise NICHT wahr), speichern Sie keine vertraulichen Informationen auf dem Computer Client, wenn Sie es vermeiden können.

Es ist viel, viel, viel sicherer, vertrauliche Informationen auf dem Server zu speichern und entsprechende Anmeldeinformationen zu benötigen, bevor diese Informationen einem Browser zur Verfügung gestellt werden. Sie können dann die physische Sicherheit der Daten auf Ihrem Server steuern und verhindern, dass Benutzer auf Daten zugreifen, die nicht ihnen gehören. Außerdem können Sie es während des Fluges mit SSL schützen.

Wenn Sie wirklich etwas lokal speichern möchten, das nur für einen Benutzer und einen Computer und einen Browser auf diesem Computer verfügbar ist, können Sie ein Kennwort anfordern und dieses Kennwort zum Verschlüsseln/Entschlüsseln von im lokalen Speicher gespeicherten Daten verwenden . Abgesehen von einer vorübergehenden Offline-Aktivität bin ich mir derzeit nicht sicher, warum dies eine bessere Benutzererfahrung wäre, als sie auf einem Server zu speichern, auf dem sie für diesen Benutzer verfügbar ist, unabhängig davon, wie sie auf das Internet zugreifen. In diesen Tagen von mobilem Zugriff, Tablet-Zugang, Laptop-Zugang, etc ... scheint es, dass der Trend mehr Dinge in der Cloud zu speichern ist, so dass ein bestimmter Benutzer Zugang zu ihren Daten über jeden Internetzugang bekommen kann, den sie benutzen könnten Sie müssen den gleichen Computer verwenden.

+0

Beachten Sie, dass es möglich ist, sensible Daten auf dem Client * zu speichern, wenn * es verschlüsselt und mit einem MAC in einer nicht formbaren Weise geschützt ist. Ihr Web-Framework bietet möglicherweise eine Möglichkeit, dies zu tun; wenn es sich nicht darum kümmert, selbst zu rollen, es sei denn, du bist mit kryptographischem Material beschäftigt. – Venge

+0

Nun, ich dachte über die Verschlüsselung der lokalen Daten mit einem Benutzerpasswort (i.c.w. AES, oder so ähnlich) nach @ chester1000's Kommentar unter meiner Frage nach. Ich möchte auf [ZeroBin] (http://sebsauvage.net/paste/) und ähnliche Ideen aufbauen, von denen Sie vielleicht schon gehört haben. –

+0

@fireeyedboy - Ich habe einen Kommentar zur lokalen Verschlüsselung hinzugefügt. – jfriend00

Verwandte Themen