PHP, crypt () နှင့် password_verify () တွင်စကားဝှက်လျှော်ခြင်းနှင့်စစ်ဆေးခြင်းကိုပြုလုပ်ရာတွင်မကြာခဏဖော်ပြသည့်လုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ၎င်းတို့အားလုံးသည် password-security အပြောင်းအလဲများပါ 0 င်သော်လည်း၎င်းတို့သည်ကွဲပြားခြားနားစွာ အသုံးပြု. ကွဲပြားခြားနားသောရည်ရွယ်ချက်များအတွက်ဒီဇိုင်းပြုလုပ်ထားသည်။ ထို့ကြောင့် developer များကမေးနိုင်သည် -
Crypt () သည် PHP တွင်အစောပိုင်းကာလများတွင်စကားဝှက်များကိုစာဝှက်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည် algorithms အမျိုးမျိုးကိုထောက်ပံ့သည်။
des (ပုံမှန်)
MD5 ( ဒေါ်လာ 1 ဒေါ်လာ ဖြင့်စတင်ခြင်း)
Blowish ( $ 2A $ , $ 2y $ , စသည်ဖြင့်စတင်ပါ)
Sha-256, Sha-512 ( ဒေါ်လာ 5 ဒေါ်လာ ဖြင့်ဒေါ်လာ 5 ဒေါ်လာဖြင့် ဒေါ်လာ 6 ဒေါ်လာ ဖြင့်စတင်)
ပုံမှန် crypt () အသုံးပြုမှုသည်အောက်ပါအတိုင်းဖြစ်သည် -
$password = 'mySecret';
$salt = '$2y$10$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
$hash = crypt($password, $salt);
Password_verify () သည် PHP 5.5 တွင်မိတ်ဆက်ပေးသည့် function တစ်ခုဖြစ်ပြီး password_hash () ကို အသုံးပြု. hashes များကိုမှန်ကန်စွာအတည်ပြုရန်အထူးဒီဇိုင်းပြုလုပ်ထားသည်။ (BCRYPT, argon2) နှင့်နှိုင်းယှဉ်ခြင်းနှင့်နှိုင်းယှဉ်ခြင်းဖြင့်အသုံးပြုသော algorithm ကိုအလိုအလျောက်သတ်မှတ်သည်။
if (password_verify('mySecret', $hashFromDatabase)) {
echo 'စကားဝှက်မှန်';
}
တိုတောင်းသောအဖြေ - မထောက်ခံပါ, ၎င်းသည်အဓိပ္ပာယ်မရှိပါ။
Password_verify () သည် crypt နှင့်ဆင်တူသည့်နောက်ခံယန္တရားကိုအမှန်ပင်ခေါ်ဆိုသော်လည်း၎င်းသည်၎င်း၏ "အိမ်ထောင်စု" function password မှထုတ်လုပ်သော hash fatch ကိုသာထောက်ပံ့သည်။ အကယ်. သင် crypt () ကို အသုံးပြုပါက hash ကိုစိတ်ကြိုက်ပြုလုပ်ရန်နှင့်စကားဝှက်ကိုစစ်ဆေးရန်အတွက်စကားဝှက်ကိုသုံးရန် Password_verify () ကို သုံးရန်အောက်ပါပြ problems နာများပေါ်ပေါက်လာလိမ့်မည်။
အကယ်. hash format သည် password_verify_verify () မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါကမှားယွင်းသောပြန်လာလိမ့်မည်။
PHP သည် Rights Non-Non-format format hashes များကိုအနာဂတ် ဗားရှင်း များဖြင့်ထုတ်ပေးသောအထောက်အပံ့များကိုအာမခံချက်မရ။
Password_verify () ကို မှားယွင်းသောပုံစံအတွက် hash အတွက်လုံးဝခွဲဝေခြင်းမပြုနိုင်ပါ။
တစ်နည်းပြောရရင် နှစ်ယောက်ကဆက်နွယ်နေပေမယ့်သူတို့ဟာအပြန်အလှန်ဆက်သွယ်နိုင်ဖို့ဒီဇိုင်းကိန်းစုမဟုတ်ပါ။
အမှားအယွင်းများမှတစ်ဆင့်ဆားတန်ဖိုးများနှင့် algorithm ရွေးချယ်ခြင်းကိုကိုယ်တိုင်ကိုယ်ကျစီမံပါ။
အကယ်. မလျော်ကန်စွာအသုံးပြုသည် (ပုံမှန် default des des des des des des descorithm သို့မဟုတ်အားနည်းသောဆားကိုအသုံးပြုခြင်းကဲ့သို့) သင်သည် brute-force cracking ကိုဖြစ်ပေါ်စေသည်။
အလိုအလျောက်မွမ်းမံမှု algorithm အတွက်ယန္တရားမရှိပါ။
အနာဂတ်နှင့်လိုက်ဖက်မှုအာမခံမရနိုင်ပါ။
Security Default algorithms (ထိုကဲ့သို့သော Bcrypt ကဲ့သို့) ကိုအလိုအလျောက်ရွေးချယ်ပါ။
အလိုအလျှောက်ဆားတန်ဖိုးများကိုထုတ်လုပ်;
algorithm ကိုကောင်းစွာ encapsulated သည်, developer များကအခြေခံအားဖြင့်အကောင်အထည်ဖော်မှုကိုဂရုမစိုက်ရန်မလိုအပ်ပါ။
ချောမွေ့သော algorithm ကို password_needs_Rehash () မှတဆင့်အဆင့်မြှင့်နိုင်သည်။
လုံခြုံမှုကိုခေတ်သစ်စံနှုန်းများဖြင့်ပြန်လည်သုံးသပ်သည်။
ပိုမိုကောင်းမွန်သောလုံခြုံရေးနှင့်အနာဂတ်နှင့်လိုက်လျောညီထွေဖြစ်အောင် Password_Hash () ကို password_verify ()) ကို အမြဲတမ်းသုံးရန်အကြံပြုသည် ။
// စကားဝှက်ကိုမှတ်ပုံတင်ခြင်းသို့မဟုတ်ပြုပြင်သည့်အခါ
$hash = password_hash('mySecret', PASSWORD_DEFAULT);
// login မှာအတည်ပြုပါ
if (password_verify('mySecret', $hash)) {
// အတည်ပြုအောင်မြင်သည်
}
အကယ်. သင်သည်သင်၏စနစ်ဟောင်း၌ crypt () ကို သုံးပါကအသုံးပြုသူလော့စင်းသည်အောင်မြင်ပြီးဒေတာဘေ့စ်တွင်တန်ဖိုးကိုမွမ်းမံပြီးနောက် hash ကိုပြန်လည်ထူထောင်ရန် Password_Hash () ကို အသုံးပြုရန်အကြံပြုသည်။ ဤချဉ်းကပ်မှုသည်ပိုမိုလုံခြုံစိတ်ချရသောစာဝှက်စနစ်တစ်ခုသို့တဖြည်းဖြည်းအသွင်ကူးပြောင်းရေးကိုတဖြည်းဖြည်းကူးပြောင်းနိုင်သည်။
Crypt () သည် PHP တွင်ဝါရင့်တစ် ဦး ဖြစ်သော်လည်း၎င်းသည် password processing ၏နယ်ပယ်တွင်ပိုမိုခေတ်မီပြီးလုံခြုံသော စကားဝှက်_Hash () နှင့် password_verifie () () နှင့် လျှို့ဝှက်နံပါတ်များဖြင့်အစားထိုးခဲ့သည်။ Crypt () နှင့် password_verify () ကို အသုံးပြုခြင်းကိုအသုံးပြုခြင်းသည်မျှော်လင့်ထားသည့်လုံခြုံရေးတိုးတက်မှုများကိုဖြစ်ပေါ်စေလိမ့်မည်မဟုတ်သော်လည်း ထို့ကြောင့် အကောင်းဆုံးအလေ့အကျင့်သည် System ၏လုံခြုံရေးနှင့်ထိန်းသိမ်းခြင်းကိုသေချာစေရန် PHP မှ PHP မှ PHP မှပေးသော password_series function ကိုအပြည့်အဝကျင့်သုံးရန်ဖြစ်သည် ။
နောက်ထပ်လုံခြုံရေးအစီအမံများအရ argon2 algorithm ကိုပေါင်းစပ်။ အသုံးပြုနိုင်သည်။