Дизайн для сохранения старых паролей для аутентификации
У меня есть требование, что при сбросе пароля новый пароль должен отличаться от старых паролей. Я подумываю о том, чтобы спроектировать это как объект User, имеющий несколько объектов Password, и объект Password, содержащий userId, password и creationDate.
Когда пароль сброшен, он проверит новый пароль по всем старым паролям (кроме последнего) для пользователя, и если совпадение будет найдено, он будет удален.
Если его нет в списке старых паролей, он создаст новую запись в списке паролей для пользователя. Когда пользователь входит в систему, система должна проверять последний пароль на основе созданной даты.
Просто хотел проверить ваши мысли по поводу этого дизайна и посмотреть, есть ли лучший способ сделать это. Благодарю.
1 ответ
(кроме последнего пароля)
Почему вы не проверяете его по последнему паролю? Обратите внимание, что вы упомянули этот шаг до того, как вы фактически сохранили новый пароль. так что вы должны проверить это со всеми старыми паролями.
Это звучит хорошо, однако ваш Password
свойство должно быть соленым и хешированным паролем, а не реальным паролем в текстовом виде.
Вы должны выбрать стандартный (т.е. надежный и проверенный) алгоритм, такой как PBKDF2 или bcrypt.