PHPda parolni xeshlash
Parolni ochiq shaklda saqlash - noto'g'ri. Haker-yomon niyatli shaxs sizning ma'lumotlar bazangizga kirish huquqini olishi va parollarni o'g'irlashi mumkin.
Shuning uchun odatda login ochiq shaklda saqlanadi,
parol esa maxsus md5 funksiyasi orqali xeshlanadi,
bu funksiya parametr sifatida parolni qabul qiladi,
va xeshi ni qaytaradi, uning orqali
asl parolni tiklab bo'lmaydi.
Keling, masalan, biror satrning xeshini topamiz:
<?php
echo md5('12345'); // chiqadi '827ccb0eea8a706c4c34a16891f84e7b'
?>
Endi bizning registratsiyamizni va avtorizatsiyamizni qayta ishlashimiz kerak. Boshlash uchun men foydalanuvchilar jadvalini tozalashni maslahat beraman, chunki u yerda hozir parollar ochiq shaklda saqlanmoqda, lekin ularning xeshlari saqlanishi kerak. Keyin registratsiyani sinovdan o'tkazish paytida jadval yangi formatdagi ma'lumotlar bilan to'ldiriladi.
Keling endi registratsiyamizni tuzatamiz, shunday qilib, yangi foydalanuvchini bazaga saqlashda parol emas, balki uning xeshi qo'shiladi.
Tasvirlangan tuzatish quyidagicha bo'ladi:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // parolni uning xeshiga aylantiramiz
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Avtorizatsiyaga ham shunga o'xshash tuzatishlarni kiritamiz:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // parolni uning xeshiga aylantiramiz
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Xeshlashni hisobga olgan holda registratsiyaga o'zgartirishlar kiriting, bir nechta yangi foydalanuvchilarni ro'yxatdan o'tkazing, ularning ma'lumotlar bazasiga xeshlangan parollar bilan qo'shilganligiga ishonch hosil qiling.
Xeshlashni hisobga olgan holda avtorizatsiyaga o'zgartirishlar kiriting, ilgari ro'yxatdan o'tgan foydalanuvchilar hisobi bilan tizimga kirishga harakat qiling.