Ich bin derzeit Ingenieur in einem Projekt in der Entwicklungsphase. Ein 'Modul' in diesem Projekt bietet die Möglichkeit zur Benutzerauthentifizierung / -autorisierung. Es ist jedoch zu unserer Sorge gekommen, dass der Passwort-Hashing-Algorithmus möglicherweise nicht dem Cop entspricht (auch bekannt als nicht BCrypt). (Das Schreckliche ist nicht ganz sicher, was es ist und woher es kommt!)
Dies muss sich offensichtlich ändern und der Patch wird geplant. Wir müssen natürlich alle unsere Testbenutzer aktualisieren, da ihre Passwörter die alte Hashing-Methode verwenden, was kein großes Problem darstellt. Alle unsere Demo-Benutzer werden beim Erstellen automatisiert, sodass das Skript aktualisiert wird. Die nächste Frage ist jedoch, was passiert, wenn es sich um ein Produktionssystem mit aktiven und veralteten Benutzern aller Art handelt. Was wäre die beste Vorgehensweise?
- Erzwingt automatisch ein Zurücksetzen des Kennworts für jeden Benutzer? Dadurch wird jeder Benutzer darüber informiert, dass sein Kennwort geändert wurde. Dies kann zu Fragen / Verwirrung führen und den Verdacht auf eine Sicherheitsverletzung aufkommen lassen. Möglicherweise werden weitere Fragen gestellt, die von den Stakeholdern der Website möglicherweise nicht unbedingt beantwortet werden können.
- Aktualisieren Sie die Datenbank, um zu kennzeichnen, ob es sich um die neue oder die alte Methode handelt. Sobald ein Benutzer authentifiziert wurde, aktualisieren Sie sein Kennwort in der DB mit. Erfordert ein wenig Logik im Dienst und der Übergang wird für jeden vorhandenen Benutzer scheinbar unmöglich sein. Das Problem besteht darin, dass bei einem Verstoß möglicherweise zwei Methoden angewendet werden. Wenn sich herausstellt, dass die weniger sichere Methode so unsicher ist, kann sie offensichtlich beschädigt werden.
- Alle Kennwörter zurücksetzen, Verwenden einer BCrypted-Version des vorhandenen Hash. Kennzeichnen Sie es als den alten Stil, sodass bei erfolgreicher Authentifizierung nur ein Hash des Kennworts und kein Hash eines Hashs beibehalten wird. ol>