⊗ppPmAuHFP 426 of 447 menu

password_hash funksiyasi

Aslida md5 funksiyasi va uning yordamida parolni tuzlash eskirgan hisoblanadi. Biz uni keyingi materialni tushunishingiz uchun, shuningdek, boshqarning loyihalari bilan ishlaganingizda duch kelishingiz mumkin deb o'rgandik.

Tuzlangan parolni olishning yanada mukammal usuli mavjud. Buning uchun password_hash funksiyasi ishlatiladi. U birinchi parametr sifatida satrni, ikkinchi parametr sifatida shifrlash algoritmini (bu haqida keyinroq) qabul qiladi va shu satrning tuz bilan birgalikdagi xeshini qaytaradi.

Ushbu kodni bir necha marta ishga tushirib ko'ring:

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

Siz har safar boshqacha natija olasiz va bu natijada satrning birinchi qismi tuz, ikkinchi qismi esa tuzlangan parol bo'ladi.

Aytaylik, bizda password_hash funksiyasidan olingan xesh va qandaydir parol bor. Bu, shu parolning xeshi yoki yo'qligini tekshirish uchun password_verify funksiyasidan foydalanish kerak - u birinchi parametr sifatida parolni, ikkinchi parametr sifatida xeshni qabul qiladi va true yoki false qaytaradi.

Keling, misolda ko'ramiz:

<?php $password = '12345'; // parol $hash = '$2y$10$xoYFX1mFPxBSyxaRe3iIRutxkIWhxGShzEhjYUVd3qpCUKfJE1k7a'; // xesh if (password_verify($password, $hash)) { // shu parolning xeshi } else { // shu parolning xeshi emas } ?>

Bu bizga amaliyotda nima beradi: biz ma'lumotlar bazasida tuzni saqlash uchun alohida maydon yaratishimiz shart emas, shu tuzni yaratish bilan bog'liq muammolarga o'zimiz duch kelishimiz shart emas - PHP hammasini o'zi qiladi!

Ya'ni, ma'lumotlar bazasidagi password maydonida biz tuzlangan parolni uning tuzi bilan birga saqlaymiz. Bunda xeshlangan parol katta uzunlikka ega bo'ladi. Shuning uchun ma'lumotlar bazasida parol maydonining hajmini tuzatib, uni 60 belgiga o'rnatishimiz kerak.

Endi keling, ro'yxatdan o'tish kodini tuzatamiz. Mavjud holatda mana bu:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // tuz uzunligi for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // ASCII-table dan belgi } return $salt; } $salt = generateSalt(); // tuz $password = md5($salt . $_POST['password']); // parolni tuzlangan xeshga aylantiramiz ?>

password_hash yordamida biz buni shunday qisqartiramiz:

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

Xuddi shunday, autentifikatsiya kodi ham o'zgartiriladi:

<?php $login = $_POST['login']; $query = "SELECT * FROM users WHERE login='$login'"; // loginga ko'ra foydalanuvchini olamiz $res = mysqli_query($link, $query); $user = mysqli_fetch_assoc($res); if (!empty($user)) { $hash = $user['password']; // Ma'lumotlar bazasidagi tuzlangan parol // Bazadagi xesh va kiritilgan parolning mosligini tekshiramiz if (password_verify($_POST['password'], $hash)) { // hammasi yaxshi, autentifikatsiya qilamiz... } else { // parol mos kelmadi, xabar chiqaramiz } } else { // bunday loginli foydalanuvchi yo'q, xabar chiqaramiz } ?>

O'zingizning autentifikatsiya va ro'yxatdan o'tish tizimingizni yangi o'rganilgan funksiyalar asosida qayta yarating.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish