2016-07-16 14 views
0

Wie jeder weiß, dass Drupal Passwort speichern mit SHA2-Methode, die Verschlüsselung + Hashing + Salt auf ihm beinhaltet.Password Migration - Drupal SHA2 zu PHP MD5 Version

Ich habe eine Liste von Passwörtern, die derzeit von einigen meiner Kunden in Drupal verwendet werden. Da wir das gesamte System auf Custom PHP migriert haben, können wir nicht dieselben Passwörter verwenden. Und wir wollen wirklich nicht jeden in der Datenbank bitten, ein neues Passwort zu generieren.

Wenn es irgendeinen Weg gibt, wo wir alle Passwörter ändern könnten, die in SHA2 (Drupal - 512 Encryption) sind, um unser neues System zu unterstützen, das momentan MD5/SHA1 (PHP Mysql Datenbank) hat.

Jede Hilfe wäre willkommen.

+1

Nein, es gibt keine Möglichkeit, sie ohne Benutzerinteraktion zu konvertieren. Ist das neue System so gesperrt, dass Sie nicht einfach das gleiche Hash wie das alte verwenden können?MD5 ist unsicher und SHA1 ist bereits fraglich. –

+0

Wir möchten keinen unserer Benutzer bitten, seine Passwörter zurückzusetzen. Da das neue System von uns entwickelt wurde, haben wir die vollständige Kontrolle über die Auswahl des Algorithmus für unsere Passwörter. Der springende Punkt dabei ist, dass unsere Passwörter, die in Drupal waren, nicht in der mysql-basierten Version funktionieren. –

+0

Ich verstehe nicht "MySQL-based kompatibel." Die Datenbank speichert nur Werte, wie wirkt sich das auf die Authentifizierung aus? Erfolgt die Authentifizierung nicht in Ihrem Code? –

Antwort

3

Sie wollen wirklich nicht gehen zu MD5. Es ist tot, soweit eine Passwort Hashing-Methode geht. Sie sollten auf password_hash und etwas wie Bcrypt auf das absolute Minimum verschieben.

Denken Sie daran, wenn sich jemand anmeldet und Sie bestätigen, dass sein Passwort korrekt ist, können Sie damit aktualisieren, wie das Passwort in der Datenbank gehashed wird. Wenn sie eine schwache Methode verwenden, wechseln Sie zu einer starken und speichern Sie ihren Benutzerdatensatz. Niemand wird wissen, was du getan hast.

Nach einem Jahr oder so können Sie alle Passwörter im alten Format immer wieder erzwingen, wenn Sie sich Sorgen um diese Haftung machen. Alle Ihre aktiven Benutzer sind davon nicht betroffen.

1

Ich würde nicht vorschlagen, zu einem anderen Passwort-Format und vor allem nicht MD5 zu ändern. Da Sie bereits über die Passwörter verfügen, können Sie das Drupal-Passwort-Hashing in Ihrer eigenen Anwendung implementieren und einfach die bestehenden Passwörter weiter verwenden.

Weitere Informationen zu den Passwortformaten finden Sie z. B. in this question.

0

Ich denke, Sie sollten einen "Übergang" verwenden. Verwenden Sie zum Beispiel Ihr neues System, aber lassen Sie das alte Passwort in der Datenbank.

In Ihrem Code, bei der Benutzeranmeldung erhalten Sie das Passwort (ex: $_POST['pwd']), und crypt es mit einem starken Algorithmus (nicht MD5). Dann können Sie es in ein neues Feld Ihrer Datenbank einfügen.

Ihre neue Datenbank könnte also ein Feld 'old_pwd' haben, das das alte Passwort enthält, und ein Feld 'pwd', das das neue Passwort mit Ihrem neuen Algorithmus enthält. Laut mir ist dies die einfachste Art, diese Migration durchzuführen.

0

Passwort-Überprüfung Code ist sehr ähnlich in Drupal 7 und 8 und leicht zu leihen, hat es keine starke Abhängigkeit von Drupal-Komponente. Es sollte ziemlich einfach sein, die Unterstützung für Drupal's Hashes zu Ihrem Passwort-Prüfcode hinzuzufügen. Ermöglichen, dass sich Benutzer mithilfe ihres Kennworts authentifizieren, indem sie Drupal-Hashes in Ihrer Datenbank speichern.

Um zu Ihrem neuen Hashing-Algorithmus zu migrieren, wiederholen Sie einfach die Passwörter bei erfolgreicher Authentifizierung. Auf diese Weise werden alte Hashes im Laufe der Zeit ersetzt.

Drupal hat einen ähnlichen Mechanismus, um transparente Updates oder alte MD5-Hashes zu gewährleisten. Schauen Sie sich die user_check_password() und user_needs_new_hash() an, um zu sehen, wie es gemacht werden könnte.