Паролҳоро дар 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'";
?>
Ба сабти ном бо назардошти ҳеш кардан тағирот ворид кунед, чанд корбари нав сабти ном кунед, ва боварӣ ҳосил кунед, ки ба пойгоҳи додаҳо онҳо бо паролҳои ҳешшуда илова карда шудаанд.
Ба авторизатсия бо назардошти ҳеш кардан тағирот ворид кунед, кӯшиш кунед, ки ба номи корбарони пешакӣ сабти номшуда ворид шавед.