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