it-swarm-eu.dev

Wie sicher ist localstorage?

Die Frage sagt wirklich alles. Ich möchte einen Dienst bereitstellen, aber ich möchte keine Daten selbst in einer Datenbank speichern. Bei all den jüngsten Nachrichten über Hacking usw. scheint es mir schöner, dass Kunden die vollständige Kontrolle über ihre Daten haben.

Das Problem ist, dass die gespeicherten Daten potenziell sensibel sind. Was ich tun wollte, war ... wenn ein Kunde die Website besucht, wird die Frage gestellt, ob Sie sich auf einem PC oder einem öffentlichen Computer befinden. Wenn sie sich auf einem öffentlichen Computer befinden, verweigert die Site den Zugriff.

Wenn sie sich auf einem PC befinden, werden sie aufgefordert, ein Kennwort festzulegen. Alle ihre Daten würden dann mit diesem Passwort verschlüsselt. Das ist natürlich nicht zu sicher. Die Verschlüsselungsmethode wäre in JavaScript und das Kennwort im Klartext, daher gehe ich davon aus, dass ein versierter Benutzer das Kennwort im localStorage finden und auf die Daten zugreifen kann.

Ich habe jedoch das Gefühl, dass dies kein allzu großes Problem ist. Wenn Sie einen PC verwenden, ist die Wahrscheinlichkeit gering, dass dies geschieht, da ... jemand anderes Zugriff auf sein bestimmtes Benutzerkonto auf dem Computer benötigt, jemand anderes über die Site Bescheid wissen muss ... jemand anderes dies verstehen muss localStorage und wie man darauf zugreift. Die sensiblen Daten gefährden weder ihre Identität noch vieles andere. Es zeichnet nur etwas auf, das die meisten Menschen nicht gerne öffentlich veröffentlichen würden.

Die Frage ist also wirklich, ob localStorage sicher genug ist.

Zusätzliche Frage .. Wie schwierig ist es, Ihren localStorage zu löschen? Ich möchte nicht, dass Benutzer versehentlich ihre Daten löschen.

Schließlich - lohnt es sich sogar, ihre Daten zu verschlüsseln/zu entschlüsseln, als ob Sie das Passwort hätten, mit dem Sie auf die Site zugreifen können.

33
JasonS

Wie wäre es, wenn Sie das Passwort überhaupt nicht speichern würden, auch nicht im lokalen Speicher? Sie können eine Schlüsselableitungsfunktion verwenden, um einen Schlüssel aus dem Kennwort abzurufen. Mit einem Salz und einer angemessenen Anzahl von Iterationen sollte dies anständig sicher sein.

10
CodesInChaos

Die Verwendung von JavaScript mit lokalem Speicher ist maximal so sicher wie (Ihr Server plus die Verbindung zwischen Browser und Server).

Wenn es jemandem gelingt, Ihren Server zu ändern und verschiedene JS-Dateien bereitzustellen oder (während der Übertragung) die vom Server an den Client gesendeten JS-Dateien zu ändern, kann er mit den gewünschten Daten alles tun.

Zusätzlich: Da sich die Daten auf dem Client befinden, können Sie nichts tun, um die Daten zu schützen. Auf einem normalen Server könnten Sie z. Beschränken Sie die Zugriffshäufigkeit (Beispiel für einen Remote-Passwort-Safe: Nur 1 Passwort wird innerhalb von 10 Minuten gelesen). All dies ist nutzlos, wenn sich die Daten auf dem Client befinden und der gesamte Code, der mit den Daten arbeitet, von einem Angreifer manipuliert werden kann.

Schließlich müssen Sie auch bei localstorage Ihre Webanwendung sichern! Warum dann Dinge auf dem (hoffentlich) sicheren Server tun? Wenn nicht, warum nicht auch ein lokales Programm verwenden, das auf dem Client installiert ist?

2
Daniel Böhmer

Wie wäre es mit einem Schlüssel vom Server, mit dem die localStorage-Daten entschlüsselt werden?

Es könnte so funktionieren:

  • Wenn eine Sitzung eingerichtet ist, gibt der Server einen Schlüssel zurück.
  • Dieser Schlüssel wird zum Ver-/Entschlüsseln der Daten in localStorage verwendet.
  • Wenn der Benutzer die Seite verlässt, geht der Schlüssel verloren, sodass andere Benutzer nicht lesen können, was sich in localStorage befindet.

Dies sollte nur den Zugriff ermöglichen, während ein Benutzer eine eingerichtete Sitzung hat.

2
Justin Meyer

Zwei Probleme:

  1. wenn Sie Nur-Text-Passwörter speichern und sich dann auf die Tatsache verlassen, dass sie wahrscheinlich nicht gefunden werden, ist dies nur Sicherheit durch Dunkelheit. Speichern Sie die Daten einfach im Klartext und verlassen Sie sich auf dieselbe Annahme (immer noch nicht sicher, aber kein falsches Sicherheitsgefühl).

  2. wenn Benutzer in den meisten Browsern ihren Cache löschen, entfernen sie auch ihren localStorage-Inhalt. Menschen erwarten nicht, wichtige Daten zu verlieren, wenn sie ihren Verlauf und ihren Cache löschen.

Ich denke, Sie überbiegen, wofür localStorage gedacht ist. Wenn Sie eine lokale Datenbank verwenden möchten, die gut mit Webapps funktioniert, können Sie sich CouchDB 's couchapps ansehen.

Speichern Sie das Passwort jedoch nicht.

1
Giacomo

im Allgemeinen ist es nicht schwer, den lokalen Speicher zu löschen, aber es hängt vom Browser ab. Sie müssen sich jedoch an die Entwicklertools des Browsers wenden (Firebug, Webkit usw.).

denken Sie daran, wie Sie an Cookies denken. Sie sollten niemals vertrauliche Daten im lokalen Speicher aufbewahren. Passwörter, Kreditkartennummern, was auch immer.

sie können jederzeit eine Funktion implementieren, um den lokalen Speicher nach x Inaktivität zu löschen. Dies wird jedoch kein Sicherheitsproblem lösen. Es ist wie eine automatische Sitzung ablaufen. Das gleiche Problem tritt auf, wenn eine Person einen Computer verlässt und sich dann eine andere Person vor Ablauf der Sitzung hinsetzt, kann sie Dinge tun.

0
hvgotcodes

Sie könnten javascrypt verwenden. Fragen Sie den Benutzer nach einem Kennwort, das zum Verschlüsselungs-/Entschlüsselungsschlüssel wird

Sie müssen das Kennwort nicht speichern, sondern müssen es jedes Mal anfordern, wenn der Benutzer die Seite öffnet.
Kann gespeichert werden, wenn der Benutzer dies wünscht, und jetzt die Auswirkungen.

Aber was ist dann mit Stivlos Kommentar:

  1. zugriff auf mehrere Geräte
  2. backup
  3. passwort vergessen
  4. zu einfaches Löschen des Cache

Ich denke, Sie sollten den Beginn der Argumentation überdenken. Vermeiden Sie die Cloud nur wegen einiger aktueller und sensationeller Ereignisse, ist eine schnelle Schlussfolgerung.

0
Mic