⊗ppPmAuHFP 426 of 447 menu

Funktsioon password_hash

Tegelikult loetakse funktsioon md5 ja parooli soolamine selle abiga vananenuks. Me õppisime seda selleks, et te mõistaksite edasist materjali, aga ka seetõttu, et võite sellega kokku puutuda töötades teiste projektidega.

On olemas täiuslikum viis soolatud parooli saamiseks. Selleks kasutatakse funktsiooni password_hash. Esimese parameetrina võtab see stringi ja teise parameetrina - krüpteerimisalgoritmi (sellest hiljem), ning tagastab selle stringi räsi koos soolaga.

Proovige mitu korda käivitada seda koodi:

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

Iga kord saate te erineva tulemuse ja selles tulemuses on stringi esimene osa sool ning teine osa - soolatud parool.

Oletame, et meil on funktsioonist password_hash saadud räsi ja mingi parool. Et kontrollida, kas see on selle parooli räsi või mitte, tuleks kasutada funktsiooni password_verify - esimese parameetrina võtab see parooli, ning teise parameetrina - räsi, ja tagastab true või false.

Vaatame näidet:

<?php $password = '12345'; // parool $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // räsi if (password_verify($password, $hash)) { // räsi sellelt paroolilt } else { // räsi pole sellelt paroolilt } ?>

Mida see meile praktikas annab: me ei pea looma andmebaasis eraldi välja soola salvestamiseks, ega muretsema soola genereerimise pärast - PHP teeb kõik meie eest!

See tähendab, et andmebaasis salvestame väljale password me soolatud parooli koos selle soolaga. Samal ajal on räsitud paroolil suurem pikkus. Seepärast peame andmebaasis paroolivälja pikkust muutma ja määrama selleks 60 tähemärki.

Nüüd parandame registreerimise koodi. Siin on see, mis on praegu:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // soola pikkus for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // sümbol ASCII-tabelist } return $salt; } $salt = generateSalt(); // sool $password = md5($salt . $_POST['password']); // teisendame parooli soolatud räsiks ?>

Funktsiooni password_hash abil vähendame selle järgnevalt:

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

Samamoodi kohandatakse autoriseerimise kood:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // saame kasutaja login-i järgi $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // soolatud parool andmebaasist // Kontrollime, kas andmebaasist saadud räsi vastab sisestatud paroolile if (password_verify($_POST['password'], $hash)) { // kõik korras, autoriseerime... } else { // parool ei sobinud, kuvame teate } } else { // sellise loginiga kasutajat pole, kuvame teate } ?>

Muutke oma autoriseerimine ja registreerimine uute õpitud funktsioonide peale.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu