Я бы посоветовал вам пока сохранить старый password
в базе данных и создать новый, более правильно названный, passwordHash
рядом с ним.Таким образом, вы всегда можете вернуться к старому способу действий, если допустите ошибку.
Когда пользователь входит в систему, у вас действительно есть доступ к хэш-паролю.В этот момент вы можете создать новый хеш :
$password = $_POST["password"];
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
После этого вам необходимо сохранить новый хеш:
SQL_Query_exec("UPDATE users
SET passwordHash = " . sqlesc($passwordHash) . "
WHERE username = " . sqlesc($_POST["username"]));
Использование нового хешатогда просто вопрос проверки наличия нового хеша или нет.Если это не так, вы создаете его, в противном случае вы его используете.
Через некоторое время, когда вы узнаете, что новый хеш работает надежно, вы можете удалить старые хеши MD5 из своей базы данных для пользователей, у которых есть новыйхэш (после создания резервной копии!).
Примечание: Вы избегаете ввода пользователя вместо использования подготовленных операторов.Это не лучший вариант.См .: Как предотвратить уязвимости SQL-инъекций в приложениях PHP , где говорится:
Не очищайте ввод данных пользователем, экранируя или удаляя специальные символы.Злоумышленник может использовать кодирование, чтобы обойти такую защиту.
Или заглянуть в само руководство по PHP , где написано:
Использовать подготовленные операторы с привязкойпеременные.