⊗ppPmAuRHS 424 of 447 menu

Тіркелу кезінде тұз қосу

Сонымен, сіз md5 арқылы хештеу - бұл қайтымсыз процесс және хешке қол жеткізген хакер осы хеш бойынша парольді ала алмайтынын білесіз.

Шындығында бұл тұжырым толығымен дұрыс емес - қазіргі уақытта зиянкес хакерлер танымал және онша емес парольдердің хештер кітапханасын құрастырды және кез келген ақымақ парольді жай ғана оның хешін іздеу арқылы анықтай алады.

Бұл жеткілікті қарапайым, танымал парольдер туралы.

Мысалы, 827ccb0eea8a706c4c34a16891f84e7b хешін іздеңіз және Google іздеуінде бұл '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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау