Die Frage sagt eigentlich schon alles. Ich möchte eine Dienstleistung erbringen, möchte aber selbst keine Daten in einer Datenbank speichern. Angesichts der neuesten Nachrichten über Hacking usw. scheint es mir besser zu sein, dass Kunden die vollständige Kontrolle über ihre Daten haben.
Das Problem ist, dass die gespeicherten Daten möglicherweise vertraulich sind. Was ich tun wollte, war ... wenn ein Kunde die Website besucht, stellte sich die Frage, 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. Nun ist dies offensichtlich nicht zu sicher. Die Verschlüsselungsmethode ist JavaScript und das Passwort ist Klartext. Ich gehe davon aus, dass ein erfahrener Benutzer das Passwort im localStorage finden und auf die Daten zugreifen kann.
Ich glaube jedoch, dass dies kein allzu großes Problem ist. Wenn Sie einen PC verwenden, ist die Wahrscheinlichkeit gering, dass dies passiert, da ... jemand anderes Zugriff auf sein bestimmtes Benutzerkonto auf dem Computer benötigt, jemand anderes etwas über die Site wissen muss ... jemand anderes etwas verstehen muss localStorage und wie man darauf zugreift. Die sensiblen Daten sind keine, die ihre Identität gefährden oder vieles andere. Es zeichnet nur etwas auf, das die meisten Menschen nicht gerne öffentlich veröffentlichen würden.
Die Frage ist also, 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 / entschlüsseln, als ob Sie das Passwort haben, können Sie auf die Website zugreifen.
quelle
Antworten:
Wie wäre es, wenn Sie das Passwort überhaupt nicht speichern, auch nicht lokal? 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.
quelle
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 andere JS-Dateien bereitzustellen oder (während der Übertragung) die JS-Dateien zu ändern, die vom Server an den Client gesendet werden, 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 gewöhnlichen Server könnten Sie zB die Zugriffshäufigkeit einschränken (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 mit localstorage Ihre Webanwendung sichern! Warum dann etwas auf dem (hoffentlich) sicheren Server machen? Wenn nein, warum nicht auch ein auf dem Client installiertes lokales Programm verwenden?
quelle
Wie wäre es mit einem Schlüssel vom Server, mit dem die localStorage-Daten entschlüsselt werden?
Es könnte so funktionieren:
Dies sollte nur den Zugriff ermöglichen, während ein Benutzer eine Sitzung eingerichtet hat.
quelle
Im Allgemeinen ist es nicht schwer, den lokalen Speicher zu löschen, aber es hängt vom Browser ab. Sie müssen jedoch die Entwicklertools des Browsers aufrufen (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 immer 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. Dasselbe Problem tritt auf, wenn eine Person einen Computer verlässt und sich dann eine andere Person setzt, bevor die Sitzung abläuft.
quelle
Zwei Probleme:
Wenn Sie Klartext-Passwörter speichern und sich dann auf die Tatsache verlassen, dass diese wahrscheinlich nicht gefunden werden, ist dies nur Sicherheit durch Unbekanntheit. Speichern Sie die Daten einfach im Klartext und verlassen Sie sich auf die gleiche Annahme (immer noch nicht sicher, aber kein falsches Sicherheitsgefühl)
Wenn Benutzer in den meisten Browsern ihren Cache löschen, entfernen sie auch ihren localStorage-Inhalt. Die Benutzer erwarten nicht, wichtige Daten zu verlieren, wenn sie den Verlauf und den Cache löschen.
Ich denke, Sie überbieten, wofür localStorage gedacht ist. Wenn Sie eine lokale Datenbank verwenden möchten, die gut mit Webapps funktioniert, können Sie einen Blick auf die Couchapps von CouchDB werfen .
Aber speichern Sie das Passwort nicht.
quelle
Sie könnten Javascrypt verwenden . Fragen Sie den Benutzer nach einem Kennwort, das als Verschlüsselungs- / Entschlüsselungsschlüssel verwendet werden soll
Sie müssen das Kennwort nicht speichern, sondern müssen es jedes Mal anfordern, wenn der Benutzer die Seite öffnet.
Kann es speichern, wenn der Benutzer will, und jetzt die Auswirkungen.
Aber was ist dann mit dem Kommentar von stivlo?
Ich denke, Sie sollten den Beginn der Überlegungen überdenken. Vermeiden Sie die Cloud nur wegen einiger jüngster und sensationeller Ereignisse, ist eine schnelle Schlussfolgerung.
quelle