လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်သည်မှန်ကန်မှုရှိ, မရှိစစ်ဆေးရန် Password ကိုအသုံးပြုနည်း

အသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်သည်မှန်ကန်မှုရှိ, မရှိစစ်ဆေးရန် Password ကိုအသုံးပြုနည်း

gitbox 2025-05-29

PHP တွင်အသုံးပြုသူစကားဝှက်မှန်ကန်ကြောင်းအတည်ပြုရန်အကြံပြုထားသည့်နှင့်အလုံခြုံဆုံးနည်းလမ်းတစ်ခုမှာ password_verify () function ကိုအသုံးပြုရန်ဖြစ်သည်။ PHP 5.5 တွင်ဤလုပ်ဆောင်ချက်ကို PHP 5.5 တွင်မိတ်ဆက်ပေးပြီး password_hash () ဖြင့်စာဝှက်ထားသည့်စကားဝှက်များကိုကိုင်တွယ်ရန်ဒီဇိုင်းပြုလုပ်ထားသည်။ Password_verify () သည် Plaintext နှိုင်းယှဉ်ခြင်းထက်ပိုမိုလုံခြုံသည်သို့မဟုတ် MD5 / Sha1 ကိုဆေးကြောခြင်းထက်ပိုမိုလုံခြုံသည်။

အခြေခံအသုံးပြုမှု

Password_verify () တွင် 0 င်ရောက်သည့်အခါအသုံးပြုသူမှစကားဝှက် hash သိုလှောင်ထားသည့်စကားဝှက်ကို hash သိုလှောင်ထားသည့်စကားဝှက်ကိုနှိုင်းယှဉ်ကြည့်ရှုရန်ဖြစ်သည်။ ဤတွင်အခြေခံဥပမာတစ်ခုဖြစ်ပါတယ်။

<Code> <? PHP // အသုံးပြုသူ $ inplasswords 7 $ _post ['password') မှထည့်သွင်းထားသောစကားဝှက်ကိုထည့်သွင်းထားပါသည်။

// ဒေတာဘေ့စ်မှရရှိသော hash စကားဝှက် (ဥပမာ, password_hash () မှတ်ပုံတင်သည့်အခါ) မှတ်ပုံတင်သည့်အခါ)
$ သိုလှောင်မှု = '$ 2Y $ 10 $ 10 $ nouis5kj7natutfkby1veuevs1zrwgfzktfztfz7vf6hg8nqz5.yfhy';

if (password_verifier ($ inplassword, $ သိုလှောင်ရုံ)) {
ECHO "စကားဝှက်ကမှန်တယ်, login";
} အခြား
ပဲ့တင်သံ "စကားဝှက်အမှား",
}
>
</ code>

နည်းလမ်း 1: ဒေတာဘေ့စ်နှင့်ပေါင်းစပ်အသုံးပြုပါ

လက်တွေ့ကျသော application များတွင် Password Hashing ကိုယေဘုယျအားဖြင့်ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသည်။ စိစစ်အတည်ပြုနေစဉ်အတွင်းအသုံးပြုသူပေးသည့် Hash ကိုဒေတာဘေ့စ်မှဖတ်ရန်လိုအပ်သည်။ ထို့နောက်၎င်းကိုအသုံးပြုသူ၏စကားဝှက်နှင့်နှိုင်းယှဉ်ကြည့်ပါ။

<code> <? php // အသုံးပြုသူအမည်နှင့်စကားဝှက်ကို $ username = $ _post ['username'] မှတဆင့်ဖြတ်သန်းသွားကြောင်းဆိုပါစို့။ $ စကားဝှက် = $ _post ['password'];

// ဒေတာဘေ့စ် connection (ဥပမာ PDO ကိုအသုံးပြုသည်)
$ PDO = PDO အသစ် ('MySQL: HOSTH: HOSTH = localhost; dbname = myApp', 'DBORES', 'DBOPER');

// query user password hashh
$ stmt = $ pdo-> ကြိုတင်ပြင်ဆင်မှု ("Password_hash us us us on userername =?");
$ stmt-> execute ([$ username]);
$ hash = $ stmt-> fltercolum ();

IF ($ hash && password_verify ($ စကားဝှက်, $ hash))
ပဲ့တင်သံ "အောင်မြင်စွာဝင်ပါ";
} အခြား
ECHO "အသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်ဖြင့်အမှား";
}
>
</ code>

နည်းလမ်း 2. အလိုအလျောက်သက်တမ်းကုန်ဆုံးသော hash

Password_verify ()) ကို အသုံးပြုသောအခါ (ဥပမာ, algorithm သည်အဟောင်းကိုအကြံပြုထားခြင်းမရှိတော့ကြောင်းတွေ့ရှိပါက (ဥပမာအားဖြင့် parameterser သက်တမ်းကုန်ဆုံး) ကိုသင်အလိုအလျောက်အဆင့်မြှင့်တင်နိုင်သည်

<Code> <? PHP $ ရွေးစရာ = ['CAP' => 12]; အကယ်. (Password_verify)) {လျှင် ($ transfer_needs_Rehash)) {လျှင် (password_needs_Rehash)) {လျှင် ($ hewhash, $ options)) {{$ Newhash = password_hash ($ Password_Hash ($ Password_Default, $ ရွေးစရာ, // အသုံးပြုသူရဲ့ hash = $ pdo-> ပြင်ဆင်ရန် "$ PDO -> ပြင်ဆင်မှု (" Update user assof ("Update user user _Hash =?");); $ stmt-> execute ([$ Newhash, $ username]); } ပဲ့တင်သံ "အောင်မြင်စွာဝင်ပါ, စကားဝှက် hash ကိုအသစ်ပြောင်းခြင်း, } အခြား {echo "စကားဝှက်အမှား"; }?> </ code>

နည်းလမ်း 3: စိစစ်အတည်ပြုယုတ္တိဗေဒကို Encapsatate to interface ကိုသုံးပါ

စီမံကိန်း၏ထိန်းသိမ်းမှုအတွက်စကားဝှက်စိစစ်မှုဆိုင်ရာစံနမူနာကိုလျှို့ဝှက်နံပါတ်ပြုပြင်ခြင်းမူဝါဒများစီမံခန့်ခွဲရန်သီးခြားနည်းလမ်းသို့မဟုတ်လူတန်းစားသို့စာသင်ခန်းသို့ oncapsulate လုပ်ရန်အကြံပြုသည်။ ဥပမာအားဖြင့်:

<code> <? Php Class ClassPer Auth {အများပြည်သူ static function vernepassword ($ intackpaysword, $ သိုလှောင်မှု): Bool {report_verify ($ inplassword, $ inplassword, $ storedhash); }}}}}> </ code>

ခေါ်ဆိုမှုနည်းလမ်း:

<code> <? php) အကယ်. IFP :: Auth :: VernessPersword ($ _ post ['post [' post '], $ storeedhash))) } အခြား Echo "Verification မအောင်မြင်ပါ"; }?> </ code>

မှတ်သားရန်အရာ

  • အသုံးပြုသူမှကိုယ်တိုင်ထည့်သွင်းထားသောစကားဝှက်ကိုကိုယ်တိုင်မထည့်ပါနှင့်၎င်းကိုဒေတာဘေ့စ်နှင့်နှိုင်းယှဉ်ပါ။ ဆားတန်ဖိုးနှင့် hashing algorithm ကို password_verifyify () ဖြင့်အတွင်းပိုင်းကိုပိတ်ထားလိမ့်မည်။

  • MD5 () သို့မဟုတ် Sha1 () ကဲ့သို့သော Hash functions များဟောင်းများကိုမသုံးပါနှင့်။

  • Hash string သည်နောက်ကြောင်းပြန်လှည့ ်. မရပါ။ မူရင်းစကားဝှက်ကိုပြန်လည်ရယူရန်မသုံးနိုင်ပါ။

  • Password_Hash () ကို အသုံးပြု. hash ထုတ်ပေးသည်အချိန်တိုင်းကွဲပြားခြားနားသည်, သို့သော်၎င်းကို Password_verify () ဖြင့်အတည်ပြုနိုင်သည်။

အကျဉ်းချုပ်

စကားဝှက်ကို အသုံးပြုခြင်းသည်လုံခြုံစိတ်ချရသောအသုံးပြုသူစစ်မှန်ကြောင်းစစ်ဆေးခြင်းအတွက်အဓိကချိတ်ဆက်မှုများအနက်မှတစ်ခုဖြစ်သည်။ ၎င်းသည်ခေတ်မီဆေးကုသမှုကိုအသုံးပြုရုံသာမက developer ၏စိစစ်အတည်ပြုယုတ္တိဗေဒကိုရိုးရှင်းအောင်လုပ်ပြီးစကားဝှက်ခန်းဆေးအဆင့်မြှင့်တင်မှုကိုလွယ်ကူချောမွေ့စေသည်။ အမှန်တကယ်စီမံကိန်းများတွင်ဒေတာဘေ့စ်လုပ်ငန်းများနှင့်ပေါင်းစပ်ခြင်း,

Password_verify () နှင့် password processing နှင့်ပတ်သက်သောပိုမိုကောင်းမွန်သောအလေ့အကျင့်များအတွက်တရားဝင်စာရွက်စာတမ်းများကိုဖတ်ရှုပါ