⊗ppPmAuHFP 426 of 447 menu

Funkcija password_hash

Patiesībā funkcija md5 un paroles sālīšana ar tās palīdzību tiek uzskatīta par novecojušu. Mēs to pētījām, lai jūs saprastu turpmāko materiālu, kā arī tāpēc, ka jūs varat ar to saskarties, strādājot ar svešiem projektiem.

Pastāv pilnveidotāks veids, kā iegūt sālītu paroli. Šim nolūkam tiek izmantota funkcija password_hash. Pirmā parametrā tā pieņem virkni, bet otro - šifrēšanas algoritmu (par to vēlāk), un atgriež šīs virknes hešu kopā ar sāli.

Mēģiniet vairākas reizes palaist šo kodu:

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

Katru reizi jūs saņemsiet atšķirīgu rezultātu, un šajā rezultātā pirmā virknes daļa būs sāls, bet otrā daļa - sālītā parole.

Pieņemsim, ka mums ir hešs, kas iegūts no funkcijas password_hash un kāda parole. Lai pārbaudītu, vai šis ir šīs paroles hešs vai nē, jāizmanto funkcija password_verify - pirmā parametrā tā pieņem paroli, bet otro - hešu, un atgriež true vai false.

Apskatīsim piemērā:

<?php $password = '12345'; // parole $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // hešs if (password_verify($password, $hash)) { // hešs no šīs paroles } else { // hešs nav no šīs paroles } ?>

Ko tas mums dod praksē: mēs varam ne izveidot atsevišķu lauku datu bāzē sāls glabāšanai, nečakarēties ar šīs sāls ģenerēšanu - PHP visu izdarīs mūsu vietā!

Tas nozīmē, ka datu bāzē laukā password mēs glabāsim sālīto paroli kopā ar tās sāli. Turklāt hešētā parole būs lielāka garumā. Tāpēc datu bāzē mums ir jālabo paroles lauka izmērs un jāiestata tas uz 60 rakstzīmēm.

Tagad labosim reģistrācijas kodu. Lūk, tas, kas ir šobrīd:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // sāls garums for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // simbols no ASCII-tabulas } return $salt; } $salt = generateSalt(); // sāls $password = md5($salt . $_POST['password']); // pārveidojam paroli par sālītu hešu ?>

Izmantojot password_hash, mēs to samazināsim līdz:

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

Līdzīgā veidā tiks labots autorizācijas kods:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // iegūstam lietotāju pēc lietotājvārda $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // sālītā parole no datu bāzes // Pārbaudām heša no datu bāzes atbilstību ievadītajai parolei if (password_verify($_POST['password'], $hash)) { // viss kārtībā, autorizējam... } else { // parole neder, izvadām paziņojumu } } else { // lietotāja ar šādu lietotājvārdu nav, izvadām paziņojumu } ?>

Pārveidojiet savu autorizāciju un reģistrāciju, izmantojot jaunās apgūtās funkcijas.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt