Хеширование пароля на 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'";
?>
Внесите изменения в регистрацию с учетом хеширования, зарегистрируйте пару новых пользователей, убедитесь, что в базу данных они добавились с хешированными паролями.
Внесите изменения в авторизацию с учетом хеширования, попробуйте авторизоваться под зарегистрированными ранее пользователями.