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