Angenommen, jede Zeile einer Tabelle enthält Daten, die zu einem bestimmten Benutzer gehören. Der Benutzer hat ein Passwort für den Zugang zum System.
Wie kann ich eine Datenspalte mit InnoDB verschlüsseln, so dass niemand außer dem Benutzer, dessen Daten es sind, die Daten lesen kann? Ich dachte an etwas wie die Verwendung einer der MySQL-Verschlüsselungsfunktionen (z.B. AES) mit einem Schlüssel, der auf einem Hash basiert, der aus dem Passwort des Benutzers berechnet wird.
Hat jemand einen Tipp, wie ich das machen kann? Bin ich auf dem richtigen Weg?
Eine der folgenden Antworten
Bei der Änderung des Benutzerpassworts muss der Benutzerschlüssel mit dem neuen Passwort neu verschlüsselt werden, was wesentlich einfacher ist als die Neuverschlüsselung der gesamten Benutzerdaten, die beliebig groß sein können. Der Benutzerschlüssel bleibt während der gesamten Lebensdauer der Benutzerdaten im System gleich.
Wie kann das helfen? Angenommen, das Passwort lautet pass1. Und es gibt eine Reihe von Datensätzen, die mit einem daraus generierten Schlüssel verschlüsselt sind. Wenn der Benutzer nun das Passwort auf pass2 zurücksetzt, habe ich keine Möglichkeit, die Daten zu entschlüsseln, die mit pass1 verschlüsselt wurden. Wenn ein Benutzer das Kennwort komplett vergisst, sind alle verschlüsselten Daten verloren.
0 Stimmen
Auch wenn dies nicht auf Ihre spezielle Situation zutrifft, fand ich diesen Artikel hilfreich, um eine gründlichere Einführung in die damit verbundenen Probleme zu erhalten: i.amniels.com/