Ro'yxatdan o'tishda tuz qo'shish
Shunday qilib, siz allaqachon bilasizki,
md5 orqali xeshlash - bu qaytarib bo'lmaydigan jarayon va xaker
xeshga kirish huquqiga ega bo'lsa,
ushbu xesh yordamida parolni olishi mumkin emas.
Aslida bu bayonot to'liq to'g'ri emas - hozirgi vaqtda yomon niyatli xakerlar mashhur va unchalik mashhur bo'lmagan parollarning xesh kutubxonalarini tuzdilar va har qanday ahmoq parolni shunchaki uning xeshini qidirib topish orqali ochishi mumkin.
Bu yetarlicha oddiy, mashhur parollar haqida.
Misol uchun, 827ccb0eea8a706c4c34a16891f84e7b xeshini qidiring
va darhol Google qidiruvida siz ko'rasiz, bu
'12345' paroli ekanligini.
Yetarlicha murakkab parollarning xeshlarini shu tarzda ochib bo'lmaydi (sinab ko'ring).
Siz savol berishingiz mumkin, unda muammo nima - keling, hammamiz murakkab parollar bilan ro'yxatdan o'tamiz. Biroq, muammo shundaki - aksariyat foydalanuvchilar o'z ma'lumotlarining xavfsizligi haqida o'ylamaydilar va yetarlicha oddiy parollarni kiritishlari mumkin.
Ro'yxatdan o'tish paytida biz foydalanuvchilarni
uzunroq parol o'ylab topishga majburlashimiz mumkin,
masalan, minimal belgilar sonini 6 yoki
8 bilan cheklab, biroq, baribir
'123456' yoki '12345678' kabi parollar paydo bo'ladi.
Albatta, parol murakkabligini tekshirish uchun yana bir aqlli algoritmni o'ylab topish mumkin, lekin boshqa yechim ham mavjud.
Ushbu yechiming mazmuni shu: parollarni tuzlash kerak. Tuz - bu maxsus tasodifiy satr, u ro'yxatdan o'tish paytida parolga qo'shiladi va xesh endi oddiy paroldan emas, balki tuz+parol satridan, ya'ni tuzlangan paroldan hisoblanadi.
Ya'ni ro'yxatdan o'tish paytida siz quyidagiga o'xshash narsa qilasiz:
<?php
$salt = '1sJg3hfdf'; // tuz - murakkab tasodifiy satr
$password = md5($salt . $_POST['password']); // parolni tuzlangan xeshga aylantiramiz
?>
Bunda tuz har bir foydalanuvchi uchun har xil bo'ladi, uni ro'yxatdan o'tish paytida tasodifiy tarzda yaratish kerak.
Mana buni amalga oshiradigan tayyor funktsiya:
<?php
function generateSalt()
{
$salt = '';
$saltLength = 8; // tuz uzunligi
for($i = 0; $i < $saltLength; $i++) {
$salt .= chr(mt_rand(33, 126)); // ASCII-jadvaldan belgi
}
return $salt;
}
?>
Ushbu funktsiya yordamida bizning kodimizni quyidagicha qayta yozish mumkin:
<?php
$salt = generateSalt(); // tuz
$password = md5($salt . $_POST['password']); // tuzlangan parol
?>
Takrorlayman, bular ro'yxatdan o'tishdagi o'zgarishlar edi - Ma'lumotlar Bazasiga oddiy parol xeshini emas, balki tuzlangan parol xeshini saqlaymiz.
Bu hammasi emas: foydalanuvchilar jadvalida
login va password maydonlaridan tashqari
yana salt maydonini ham qilish kerak,
unda biz har bir foydalanuvchining tuzini saqlaymiz.
Yuqorida tavsiflangan tuzlangan parol bilan ro'yxatdan o'tishni amalga oshiring.