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