⊗ppPmAuHFP 426 of 447 menu

Kazi ya password_hash

Kwa kweli kazi md5 na kuongeza chumvi kwenye nywila kwa kuitumia inachukuliwa kuwa ya zamani. Tuliifunza, ili mwelewe mafunzo yaliyofuata, na pia kwa sababu mnaweza kukutana nayo wakati mnakiprojeki cha mtu mwingine.

Kuna njia bora zaidi ya kupata nywila iliyochungiwa na chumvi. Kwa hili hutumiwa kazi password_hash. Parameta ya kwanza inakubali mfumo wa maneno, na ya pili - algoriti ya usimbaji fiche (kuhusu hili baadaye), na hurudisha hash ya mfumo huo wa maneno pamoja na chumvi.

Jaribu kuendesha msimbo huu mara kadhaa:

<?php echo password_hash('12345', PASSWORD_DEFAULT); ?>

Kila mara utapata matokeo tofauti na katika matokeo hayo sehemu ya kwanza ya mfumo wa maneno itakuwa ni chumvi, na sehemu ya pili - nywila iliyochungiwa na chumvi.

Wacha tuseme tuna hash, iliyopatikana kutoka kwa kazi password_hash na nywila fulani. Ili kuthibitisha, kama hii ni hash ya nywila hizi au la, inapaswa kutumika kazi password_verify - parameta ya kwanza inakubali nywila, na ya pili - hash, na hurudisha true au false.

Wacha tuangalie kwa mfano:

<?php $password = '12345'; // nywila $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // hash if (password_verify($password, $hash)) { // hash kutoka kwa nywila hizi } else { // hash si kutoka kwa nywila hizi } ?>

Hii inatupa nini kwa vitendo: tunaweza kutounda uwanja tofauti katika hifadhidata ya kuhifadhia chumvi, kujisumbua na kutengeneza chumvi hiyo - PHP itafanya yote kwa ajili yetu!

Yaani itatokea, kwamba katika hifadhidata ya katika uwanja password tutahifadhi nywila iliyochungiwa na chumvi pamoja na chumvi yake. Wakati huo huo nywila iliyohashwa itakuwa na urefu mkubwa. Kwa hiyo katika hifadhidata ya tunahitabu kusahihisha ukubwa wa uwanja wa nywila na uweke kuwa 60 herufi.

Sasa wacha tusahihishe msimbo wa usajili. Hayo ni yale yaliyopo kwa sasa:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // urefu wa chumvi for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // ishara kutoka kwa jedwali la ASCII } return $salt; } $salt = generateSalt(); // chumvi $password = md5($salt . $_POST['password']); // tubadilishe nywila kuwa hash iliyochungiwa ?>

Kwa kutumia password_hash tutaifupisha hii hadi:

<?php $password = password_hash($_POST['password'], PASSWORD_DEFAULT); ?>

Vivyo hivyo msimbo wa uthibitishaji utarekebishwa:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // tunapata mtumiaji kwa jina la kutumia $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // nywila iliyochungiwa kutoka kwa Hifadhidata // Tunaangalia uthabiti wa hash kutoka kwa hifadhidata ya na nywila iliyowekwa if (password_verify($_POST['password'], $hash)) { // yote sawa, tuthibitishe... } else { // nywila haikukubaliana, tuonyeshe ujumbe } } else { // hakuna mtumiaji na jina la kutumia kama hilo, tuonyeshe ujumbe } ?>

Rekebisha uthibitishaji wako wa kutambulishwa na usajili kwa kazi mpya zilizosomwa.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa