PHP တွင် Phil_needs_Rehash function သည်စကားဝှက် Hash ကိုပြန်လည်ထူထောင်ရန်လိုအပ်မလားစစ်ဆေးရန်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ ယေဘုယျအားဖြင့် algorithm အသစ်ကိုအသုံးပြုသည့်အခါအဟောင်းကိုအလွယ်တကူအလုပ်လုပ်ရန်အတွက်လျှောက်လွှာတစ်ခုသည် Password Hash algorithm ကို update လုပ်ရန်လိုအပ်သည့်အခါ၎င်းသည်အသုံးဝင်သည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် Password_needs_Rehash သည် မှန်ကန်ကြောင်း ပြ the နာကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏အကြောင်းရင်းများကိုခွဲခြမ်းစိတ်ဖြာပြီးဘုံပြ roth နာဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
စကားဝှက်_needs_Rehash function သည် parameters နှစ်ခုကိုလက်ခံသည်။
$ hash : password_hash ကိုသုံးပြီးထုတ်လုပ်ထားတဲ့ hash string ကို။
$ ရွေးစရာများ - rehash လုပ်ရန်လိုအပ်သော algorithm settings များပါ 0 င်သည့်အပေါင်းအသင်းခင်းကျင်းမှု။
ဤလုပ်ဆောင်မှု၏လုပ်ဆောင်ချက်သည် Passed Hash Value သည်သတ်မှတ်ထားသော option နှင့်ကိုက်ညီမှုရှိမရှိစစ်ဆေးရန်ဖြစ်သည်။ Hashing algorithm, ကုန်ကျစရိတ်များသို့မဟုတ်အခြားရွေးချယ်စရာများသည်လက်ရှိလိုအပ်ချက်များနှင့်မကိုက်ညီပါက function သည် မှန်ကန် လိမ့်မည်။
အကယ်. သင် pass သည်မမှန်ကန်တဲ့သို့မဟုတ် format သည် password_hash function ကို format အနေဖြင့်မကိုက်ညီပါက စကားဝှက်_needs_Rehashသည် အမြဲတမ်း မှန်ကန်စွာ ပြန်လည်ရောက်ရှိလိမ့်မည်။ ဥပမာအားဖြင့်, hash ကို truncated သို့မဟုတ်အကျင့်ပျက်ခြစားမှုဖြစ်လျှင် PHP ကမှန်ကန်စွာမခွဲနိုင်ပါ။
0 င်လာနေသော hash တန်ဖိုးသည်မှန်ကန်သောစကားဝှက် Hash ရှိမရှိအတည်ပြုပါ။ hash အသေးစိတ်ကိုစစ်ဆေးရန် စကားဝှက်_get_info function ကိုသင်အသုံးပြုနိုင်သည်။ အကယ်. Algoname Fields သည်အလွတ်ပါ 0 င်ပါက hash တန်ဖိုးရှိပြ a နာရှိနိုင်သည်။
<span><span><span class="hljs-variable">$hashInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_get_info</span></span><span>(</span><span><span class="hljs-variable">$hash</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$hashInfo</span></span><span>[</span><span><span class="hljs-string">'algoName'</span></span><span>] === </span><span><span class="hljs-string">''</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'မမှန်ကန်သော hash တန်ဖိုး'</span></span><span>;
}
</span></span>
Password_NEEDS_REHAH functions ၏ဒုတိယ pareter သည် သင်လိုချင်သော hash algorithm settings (ဥပမာ algorithms, ကုန်ကျစရိတ်များစသဖြင့်သင်လိုချင်သော hash algorithm settings ကိုသတ်မှတ်ရန်အသုံးပြုသည်။ သင်ဖြတ်သန်းသောရွေးချယ်မှုများသည်မူလ hash ၏ချိန်ညှိချက်များနှင့်ကိုက်ညီမှုမရှိပါကလက်ရှိ hash သည်လိုအပ်ချက်အသစ်များနှင့်မကိုက်ညီဟုယုံကြည်သောကြောင့်လုပ်ငန်းသည် အမှန်ပင် ပြန်လည်ရောက်ရှိသည်။
Password_needs_Rehash ကိုခေါ်ဆိုသည့်အခါမူရင်း hash ဟုခေါ်သောချိန်ညှိချက်များနှင့်ကိုက်ညီကြောင်းသေချာအောင်လုပ်ပါ ။ လက်ရှိ hash သည် default password_default algorithm နှင့်ကုန်ကျစရိတ်ချိန်ညှိချက်များနှင့်ကိုက်ညီမှုရှိ,
<span><span><span class="hljs-variable">$options</span></span><span> = [</span><span><span class="hljs-string">'cost'</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>]; </span><span><span class="hljs-comment">// သင့်ရဲ့လက်ရှိလျှောက်လွှာမှာအကြံပြုထားတဲ့သူတွေကိုသုံးပါ cost အဘိုး</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">password_needs_rehash</span></span><span>(</span><span><span class="hljs-variable">$hash</span></span><span>, PASSWORD_DEFAULT, </span><span><span class="hljs-variable">$options</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'စကားဝှက် Hash ကိုပြန်လည်ထူထောင်ရန်လိုအပ်သည်'</span></span><span>;
}
</span></span>
PHP ၏ Password_Hash function သည် password_bcrypt , password_argon2i နှင့် password_argon2id စသည့်ဆေးကြောသည့်အခါကွဲပြားခြားနားသော algorithms ကိုထောက်ပံ့သည်။ အကယ်. သင်သည် hash တန်ဖိုးကိုဖြတ်သန်းသွားသောအခါသင်မတော်တဆမထောက်ပံ့သော hash format ကိုမတော်တဆသုံးပါက Password_needs_Rehash သည် hash ကိုခွဲခြမ်းစိတ်ဖြာခြင်းသို့မဟုတ်အသိအမှတ်ပြုခြင်းမပြုနိုင်သောကြောင့် အမြဲတမ်း ပြန်လာလိမ့်မည်။
သင်အသုံးပြုနေသော algorithm ကို Hashing algorithm ကိုလက်ရှိ PHP ဗားရှင်းတွင်ထောက်ခံကြောင်းသေချာစေပါ။ အကယ်. သင်သည်သင်၏ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်ခေတ်မမီတော့သော PHP ဗားရှင်းကိုအသုံးပြုနေပါက PHP ကိုအဆင့်မြှင့်တင်ရန်သို့မဟုတ်ထိုဗားရှင်းနှင့်အတူ hash algorithm ကိုအသုံးပြုခြင်းကိုစဉ်းစားပါ။
တခါတရံ စကားဝှက်_needs_Rehashသည် အမြဲတမ်း မှန်ကန်စွာ ပြန်လည်ရောက်ရှိသည်သို့မဟုတ် code ယုတ္တိဗေဒဆိုင်ရာအမှားတစ်ခုကြောင့်ဖြစ်နိုင်သည်။ ဥပမာအားဖြင့်, hash တန်ဖိုးကိုမတော်တဆပြုပြင်မွမ်းမံခြင်းသို့မဟုတ် calling အခါ parameters တွေကိုရှုပ်ထွေးနိုင်ပါသည်။
Password_needs_Rehash ကို မခေါ်မီ hash တန်ဖိုးနှင့်ရွေးချယ်စရာများကိုမှန်ကန်စွာအတည်ပြုရန်သင်၏ကုဒ်ကိုစစ်ဆေးပါ။ ဥပမာအားဖြင့်, သင်သည်သူတို့မျှော်လင့်ချက်များနှင့်တွေ့ဆုံရန်သေချာစေရန် Hash တန်ဖိုးများနှင့်ရွေးချယ်စရာများကိုအရင်ပုံနှိပ်ထုတ်ဝေနိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$hash</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>
PHP ၏ကွဲပြားခြားနားသောဗားရှင်းများသည် password_needs_Rehash ကို အကောင်အထည်ဖော်ရန်အတွက်သိမ်မွေ့စွာကွဲပြားခြားနားမှုများရှိနိုင်သည်။ အချို့ဖြစ်ရပ်များတွင် PHP ၏နိမ့်ကျသောဗားရှင်းများတွင် bug များရှိနိုင်သည် ။
သင်အသုံးပြုနေသော PHP version သည်ဆက်စပ်သော bug များကိုသတ်မှတ်ထားကြောင်းအတည်ပြုပါ။ နောက်ဆုံးပေါ်တည်ငြိမ်သော PHP ဗားရှင်းသို့မဟုတ်အနည်းဆုံး PHP 7.4 သို့မဟုတ်ထိုထက်ပိုသော PHP ကိုအသုံးပြုရန်အကြံပြုသည်။
Password_NEEDS_REHASH function ၏ရည်ရွယ်ချက်မှာ developer များက Hash algorithm သို့မဟုတ် settings ပြောင်းရွှေ့မှုများပြောင်းလဲခြင်းကြောင့် Hash algorithm သို့မဟုတ် settings ပြောင်းရွှေ့မှုများပြောင်းလဲခြင်းကြောင့် Developer များက Hash Update ကိုမွမ်းမံရန်ကူညီရန်ဖြစ်သည်။ သို့သော်, အကယ်. သင်လုပ်ဆောင်ချက်သည်အမြဲတမ်းပြန်လည်ရောက်ရှိ ကြောင်း ပြ the နာကိုသင်ကြုံတွေ့ရပါကအောက်ပါအတိုင်းသင်ကဖြေရှင်းနိုင်သည်။
Hash သည်မှန်ကန်ကြောင်းသေချာအောင်လုပ်ပါ။
Passed option သည် hash တန်ဖိုးနှင့်ကိုက်ညီမှုရှိမရှိစစ်ဆေးသည်။
Hash format သည်လက်ရှိ PHP ဗားရှင်းနှင့်သဟဇာတဖြစ်ကြောင်းသေချာပါစေ။
parameters တွေကိုမှန်ကန်စွာဖြတ်သန်းသေချာစေရန်ကုဒ် logic code ကိုစစ်ဆေးပါ။
သင်၏ PHP ဗားရှင်းသည်လူသိများသော bugs များမရှိသလောက်,
ဤပြ esh နာဖြေရှင်းမှုနည်းလမ်းများမှတစ်ဆင့်ပြ the နာ၏အမြစ်အကြောင်းအရင်းကိုရှာဖွေပြီးချောချောမွေ့မွေ့ဖြေရှင်းနိုင်သည်။