Новый API password_hash в PHP 5.5 хорош, и я бы хотел начать использовать его везде. Учитывая старый проект с более старой базой данных, в которой пароли хранятся в хэшах md5, каков наилучший способ переноса старых паролей пользователей на новый, более безопасный API?Преобразование хэшей паролей md5 в PHP 5.5 password_hash()
Помимо простого запроса пользователям сбросить свой пароль при следующем входе в систему (это непрактично и раздражает пользователей). Я подумал о возможности использования текущего хеша хд5 в качестве входного пароля для пароля для всех моих существующих пользователей. Чтобы проверить пароли для этих пользователей (во время входа в систему), я бы конвертировал их вход в хеш-файл md5, а затем использовал его для password_verify(). Новые пользователи будут избавлены от этого дополнительного шага.
Действительно ли это стоит того? Есть ли лучшие способы прозрачной миграции, в которых пользователи не навязываются сбрасыванием пароля, но я могу сразу воспользоваться преимуществами более безопасного хэширования?
Самое главное, есть ли преимущество безопасности при использовании существующих хешей md5 (которые подвержены грубой силе) и использование API password_hash() для «двойного хэша»?
Обычно вы можете просто подождать, пока пользователь не войдет в систему в следующий раз, я написал ответ на тот же вопрос здесь [Перемещение старых паролей на новый алгоритм хэширования?] (Http://stackoverflow.com/a/14402451/575765). Поскольку MD5 очень слаб для хэширования паролей, вы можете рассмотреть вопрос о сохранении хэширования BCrypt вашего хэша MD5 'password_hash ($ existingMD5Hash)' и перенести его в 'password_hash ($ password)' при следующем входе в систему. – martinstoeckli
См. Также раздел [PHP-хэш-система Openwall] (http://www.openwall.com/phpass/) (PHPass). Он переносится и затвердевает от ряда распространенных атак на пароли пользователей. Парень, который написал рамки (SolarDesigner) тот же самый парень, который написал [John The Ripper] (http://www.openwall.com/john/) и сидит в качестве судьи в [хэширования паролей конкуренции] (HTTP://password-hashing.net/). Поэтому он знает кое-что об атаках на пароли. – jww