⊗ppPmAuRHS 424 of 447 menu

Додавање соли при регистрацији

Дакле, већ знате да је хеширање помоћу md5 - неповратан процес и хакер који добије приступ хешу неће моћи да добије лоzинку из тог хеша.

Заправо, ова тврдња није сасвим тачна - тренутно, зли хакери су саставили библиотеке хешева популарних и мање популарних лозинки и било који глупан може да открије лозинку, једноставно претраживањем њеног хеша на Гуглу.

Реч је о довољно једноставним, популарним лозинкама.

Претражите, на пример, хеш 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']); // посољена лозинка ?>

Још једном ћу поновити да су то биле измене при регистрацији - у базу података чувамо не само хеш лозинке, већ хеш посолене лозинке.

То још није све: у табели са корисницима поред поља login и password треба направити још и поље salt, у коме ћемо чувати со сваког корисника.

Имплементирајте горе описану регистрацију са посоленом лозинком.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј