2016-08-29 2 views
0

password varchar(120)Kennwort halten verschiedene Daten (phpMyAdmin Datenbank)

Oberhalb ist die column name und datatype das Passwort, das ich gesetzt. Ich benutze phpMyAdmin Datenbank und erstellt einen Benutzer für Testzwecke mit userTest als Benutzername und user123 als Passwort. Als ich die Datenbank überprüfte, anstatt user123 als Kennwort zu halten, hält es etwas wie 0dcbd056919392554f346a10cc114d27. Im Vergleich zur SQL Server-Datenbank enthält die SQL Server-Datenbank die genauen Daten für das Kennwort, das der Benutzer durch die Registrierung eingegeben hat.

Trotzdem kann ich immer noch die für den Benutzernamen user123 als Passwort anmelden Usertest. Wenn ich das 0dcbd056919392554f346a10cc114d27 als Kennwort verwendete, konnte ich mich nicht am System anmelden. Ich habe es gerade bemerkt und habe mich gefragt, wie ich als Administrator das Benutzerpasswort genau so kennen werde wie das, mit dem sie sich registriert haben, wenn ich durch die Datenbank gehe?

+0

Wie erstellen Sie das Benutzerkonto? Da Sie in einem Standard-varchar speichern und phpMyAdmin für die Einfügung verwenden, sollte das Passwort im Klartext gespeichert werden. Das bedeutet, dass Sie eine Funktion oder ein anderes Mittel zum Hashing des Kennworts vor dem Einfügen ausführen. –

Antwort

1

Warum auf der Erde müssen Sie das Passwort eines Benutzers wissen? Das ist eine wirklich schreckliche Idee. Ich möchte explizit nicht die Passwörter meines Benutzers wissen oder die Möglichkeit haben, sie zu entschlüsseln. Es gibt viele Gründe, warum dies eine schlechte Idee ist. Eine davon ist, dass, wenn ein Benutzer Kennwörter erneut verwendet und Ihre Datenbank kompromittiert ist, das Klartextkennwort des Benutzers kompromittiert wurde.

Was viel häufiger ist, ist das Hash-Passwort; Nehmen Sie das Passwort des Benutzers, kombiniert mit einem kryptografischen Salt, und geben Sie diese als Eingabe für eine Hash-Funktion ein (ich glaube, dass bcrypt in diesen Tagen am häufigsten vorkommt, aber Ihre Anforderungen variieren können). Die Funktion gibt einen Nonsense-String wie $ 2a $ 06 $ XKJbhsfB4q53MovNJRgEuOkQKpnOIpjfQ7P8qMUWa63qGeHnPlyMu zurück, den Sie dann in der Datenbank speichern. Wenn der Benutzer versucht, sich anzumelden, wiederholen Sie den Hash-Prozess und vergleichen Sie das Ergebnis mit dem in der Datenbank gespeicherten Wert.

Wenn Sie wirklich eine geschäftliche Notwendigkeit haben, das Klartext-Passwort zu speichern, dann empfehle ich dringend, die Benutzer im Klartext zu warnen, dass ihre Datenbank auf unsichere Weise gespeichert werden und ein speziell gestaltetes Passwort nur für Ihre Bewerbung.

Auch hier empfehle ich dringend, die Kennwörter nicht im Klartext zu speichern und sicherzustellen, dass Sie über einen kryptografisch sicheren Hash verfügen.

Aber um Ihre Frage direkt zu beantworten, speichern Sie hier keinen reinen Textwert. Ich kann nicht wissen, was Sie tun, wenn Sie das Passwort des Benutzers eingeben, aber Sie führen offensichtlich eine Funktion für das Feld varchar aus. Wahrscheinlich haben Sie eine der Funktionen aus dem Dropdown auf der phpMyAdmin-Seite ausgewählt (siehe Screenshot unten); Dies wendet die ausgewählte MySQL-Funktion auf die Daten an, wenn Sie sie einfügen. Es gibt wahrscheinlich keinen anderen guten Grund dafür, dass phpMyAdmin Ihre Daten so manipuliert, das scheint sehr wahrscheinlich.

phpMyAdmin function dropdown

Verwandte Themen