Бақайдгирӣ дар ҳоли регистратсия
Пас, шумо аллакай медонед, ки хеши кардан тавассути
md5 - раванди баргаштанок нест ва ҳакер,
ки ба хеш дастрасӣ пайдо кардааст, наметавонад
аз ин хеш паролро ба даст орад.
Дар асл ин даъво комилан дуруст нест - дар замони ҳозир ҳакерҳои бадният кӯтаҳхонаҳои хешҳои паролҳои маъмул ва номаъмулиро таҳия кардаанд ва ҳар як аҳмақ метавонад паролро кушояд, танҳо хеши онро дар Гугл ҷустуҷӯ карда.
Дар бораи паролҳои хеле содда ва маъмул сухан меравад.
Масалан, хеши 827ccb0eea8a706c4c34a16891f84e7b-ро
дар Гугл ҷустуҷӯ кунед ва дар ҳоли ҷустуҷӯи Гугл шумо
дар ҳол мебинед, ки ин пароли '12345' аст.
Хешҳои паролҳои хеле мураккабро бо ин роҳ наметавон кушод (санҷед).
Шумо метавонед бипурсед, пас мушкилот куҷост - биёед ҳама мо бо паролҳои мураккаб бақайд гирем. Аммо, мушкиле ҳаст - аксари корбарон дар бораи бехатарии маълумоти худ фикр намекунанд ва метавонанд паролҳои худро хеле содда ворид кунанд.
Мо метавонем дар вақти бақайдгирӣ корбаронро маҷбур кунем, ки паролҳои
дарозтар ихтироъ кунанд, масалан, бо маҳдуд кардани
миқдори минималии рамзҳо ба 6
ё 8, аммо, ҳамон паролҳои намунаи '123456' ё '12345678' пайдо мешаванд.
Албатта, метавон алгоритми зиёдатереро барои санҷиши мушкилии парол ихтироъ кард, аммо роҳи дигаре низ мавҷуд аст.
Махзани ин ҳал чунин аст: паролҳоро бояд намкунӣ кард. Намак - ин сатрҳои тасодуфии махсус аст, ки ба парол дар вақти бақайдгирӣ илова карда мешавад ва хеш аллакай на аз пароли содда ҳисоб карда намешавад, балки аз сатрҳои намак+парол, яъне аз пароли намкунӣшуда.
Яъне дар вақти бақайдгирӣ шумо чизеро мекунед ки монанди ин аст:
<?php
$salt = '1sJg3hfdf'; // намак - сатрҳои тасодуфии мураккаб
$password = md5($salt . $_POST['password']); // паролро ба хеши намкунӣшуда табдил медиҳем
?>
Дар ин ҳол намак барои ҳар як корбар фарқ мекунад, он бояд тасодуфан дар лаҳзаи бақайдгирӣ тавлид карда шавад.
Ин функсияи тайёр, ки ин корро мекунад:
<?php
function generateSalt()
{
$salt = '';
$saltLength = 8; // дарозии намак
for($i = 0; $i < $saltLength; $i++) {
$salt .= chr(mt_rand(33, 126)); // рамз аз ҷадвали ASCII
}
return $salt;
}
?>
Бо ёрии ин функсия мо метавонем коди худро ба ин тараф нависем:
<?php
$salt = generateSalt(); // намак
$password = md5($salt . $_POST['password']); // пароли намкунӣшуда
?>
Бори дигар такрор мекунам, ки ин тағирот дар вақти бақайдгирӣ буд - дар PБ мо на танҳо хеши паролро, балки хеши пароли намкунӣшударо захира мекунем.
Ин ҳанӯз ҳама чиз нест: дар ҷадвали корбарон ғайр аз
соҳаҳои login ва password бояд
соҳаи salt-ро низ сохт, ки дар он
мо намаки ҳар як корбарро нигоҳ медорем.
Бақайдгирии дар боло тавсифшударо бо пароли намкунӣшуда амалӣ созед.