# Хеширование пароля на PHP

Хранить пароль в открытом виде - неправильно. Хакер-злоумышленник может получить доступ к вашей базе данных и украсть пароли.

Поэтому обычно логин хранится в открытом виде, а пароль хешируется специальной функцией `md5`, которая параметром принимает пароль, а возвращает его хеш, по которому нельзя восстановить этот самый пароль.

Давайте, например, найдем хеш какой-нибудь строки:

`<?php echo md5('12345'); // выведет '827ccb0eea8a706c4c34a16891f84e7b' ?>`

Сейчас нам необходимо переделать нашу регистрацию и нашу авторизацию. Для начала я бы советовал очистить таблицу с юзерами, так как там сейчас хранятся пароли в открытом виде, а должны хранится их хеши. Затем при тестировании регистрации таблица заполнится данными в новом формате.

Давайте теперь поправим нашу регистрацию так, чтобы при сохранении нового пользователя в базу добавлялся не пароль, а его хеш.

Описанная правка будет представлять собой что-то такое:

`<?php $login = $_POST['login']; $password = md5($_POST['password']); // преобразуем пароль в его хеш $query = "INSERT INTO users SET login='$login', password='$password'"; ?>`

Внесем аналогичные правки в авторизацию:

`<?php $login = $_POST['login']; $password = md5($_POST['password']); // преобразуем пароль в его хеш $query = "SELECT * FROM users WHERE login='$login' AND password='$password'"; ?>`

Внесите изменения в регистрацию с учетом хеширования, зарегистрируйте пару новых пользователей, убедитесь, что в базу данных они добавились с хешированными паролями.

Внесите изменения в авторизацию с учетом хеширования, попробуйте авторизоваться под зарегистрированными ранее пользователями.

←→
↑