PHP-də parolun heşlənməsi
Parolu açıq şəkildə saxlamaq düzgün deyil. Hacker-təhlükəli şəxs verilənlər bazanıza giriş əldə edərək parolları oğurlaya bilər.
Buna görə də adətən login açıq şəkildə saxlanılır,
parol isə xüsusi md5 funksiyası ilə heşlənir,
bu funksiya parametr kimi parolu qəbul edir,
özü isə onun heş-ini qaytarır, bu heş vasitəsilə
parolu bərpa etmək mümkün deyil.
Gəlin, məsələn, hər hansı bir sətrin heşini tapaq:
<?php
echo md5('12345'); // çıxaracaq '827ccb0eea8a706c4c34a16891f84e7b'
?>
İndi bizim qeydiyyatımızı və avtorizasiyamızı dəyişdirmək lazımdır. Əvvəlcə mən istifadəçilər cədvəlini təmizləməyi məsləhət görürəm, çünki orada hal-hazırda parollar açıq şəkildə saxlanılır, onların heşləri saxlanılmalıdır. Sonra test zamanı qeydiyyat cədvəli yeni formatda məlumatlarla dolacaq.
Gəlin indi qeydiyyatımızı elə düzəldək ki, yeni istifadəçini bazaya saxlayarkən parol deyil, onun heşi əlavə olunsun.
Təsvir olunan düzəliş təxminən belə bir şey olacaq:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // parolu onun heşinə çeviririk
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Avtorizasiyada da oxşar düzəlişlər edək:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // parolu onun heşinə çeviririk
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Heşləməni nəzərə alaraq qeydiyyatda dəyişikliklər edin, bir neçə yeni istifadəçi qeydiyyatdan keçirin, onların verilənlər bazasına heşlənmiş parollarla əlavə olunduğuna əmin olun.
Heşləməni nəzərə alaraq avtorizasiyada dəyişikliklər edin, əvvəllər qeydiyyatdan keçmiş istifadəçilər altında avtorizasiya olmağı sınayın.