လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> စကားဝှက်_needs_Rehashအကျိုးသက်ရောက်မှုမရှိပါ။ ဟာ Hash algorithm ကိုမှားယွင်းစွာသတ်မှတ်ထားခြင်းဖြစ်သည်

စကားဝှက်_needs_Rehashအကျိုးသက်ရောက်မှုမရှိပါ။ ဟာ Hash algorithm ကိုမှားယွင်းစွာသတ်မှတ်ထားခြင်းဖြစ်သည်

gitbox 2025-05-28

PHP တွင် Philt_needs_Rehash function ကိုလက်ရှိသတ်မှတ်ထားသော algorithm နှင့် options များကို အသုံးပြု. စကားဝှက် hash တန်ဖိုးကိုပြန်လည်ပြုပြင်ရန်လိုအပ်ခြင်းရှိ, မရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ System's Hashing Prolls အပြောင်းအလဲများ (ထိုကဲ့သို့သော BCRYP မှ အာဆင်နယ်အသင်း သို့အဆင့်မြှင့်ခြင်းသို့မဟုတ်ကုန်ကျစရိတ်အချက်အလက်များကိုပြောင်းလဲခြင်းကဲ့သို့သော) သုံးစွဲသူမှတ်တမ်းများကိုပြောင်းလဲသည့်အခါ, သို့သော် developer များကဤ function ကိုအသုံးပြုသောအခါ "unproductive" သောအခြေအနေများသည်အခြေအနေများနှင့်ကြုံတွေ့ရနိုင်သည်။ Password_Needs_Rehash သည် အဘယ်ကြောင့်အကျိုးသက်ရောက်မှုမပြုခဲ့ရကြောင်းလေ့လာကြည့်ရအောင်။

1 ။ အခြေခံလုပ်ဆောင်ချက်များကိုပြန်လည်သုံးသပ်

 $hash = password_hash('mypassword', PASSWORD_DEFAULT);
$options = ['cost' => 12];

if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
    $hash = password_hash('mypassword', PASSWORD_DEFAULT, $options);
}

ဤယုတ္တိဗေဒနည်းလမ်းများ - မူလ hash သည်လက်ရှိ algorithm သို့မဟုတ် parameters များကိုမကိုက်ညီပါက rehashed လိမ့်မည်။

2 ။ ဘုံနားလည်မှုလွဲမှားခြင်းများ - Hash Algorithm setting အမှားများ

Password_needs_Rehash ၏အဓိကအခြေခံသည် သင်ဖြတ်သန်းသွားသော algorithm နှင့် parametersters ဖြစ်သည်။ အကယ်. သင်သည်ဤ parameters များကိုမှားယွင်းစွာသတ်မှတ်ထားပါက ခြားနားချက်ကိုအကဲဖြတ်ရန်ပျက်ကွက်ပါ က မည်သည့် update ကိုမလိုအပ်ကြောင်းစဉ်းစားမိသည်။

ဥပမာ 1 - စကားဝှက်_Defaultကို အလိုအလျောက်မွမ်းမံမည်ဟုမှားယွင်းစွာတွေးမိသည်

developer အတော်များများက password_default ကို သုံးနေသမျှကာလပတ်လုံး PHP သည်သင့်အတွက် algorithm ကိုအလိုအလျောက်အဆင့်မြှင့်တင်လိမ့်မည်ဟုထင်မြင်ကြသည်။ ဥပမာအားဖြင့်:

 $oldHash = password_hash('mypassword', PASSWORD_BCRYPT); // အတိအလင်းအသုံးပြုပါ bcrypt

ထိုအခါသင်ကပြောင်းလဲပစ်:

 $options = ['cost' => 12];
$needsRehash = password_needs_rehash($oldHash, PASSWORD_DEFAULT, $options);

ပြ problem နာမှာ Password_Default သည် Philt_DEFAUNT password_bcrypt မှ Php Password_Bcrypt ဖြစ်နေသည်။ ဤအချိန်တွင်သင်သည် စစ်မှန်သော ပြန်လာရန်မျှော်လင့်ထားပေမည်, သို့သော်၎င်းသည် မှားယွင်းသော ပြန်လာသည်။

3 ။ ကုန်ကျစရိတ် parameters တွေကိုမပြောင်းလဲသည့်အခါ rehashing အစပျိုးမည်မဟုတ်ပါ။

လူအများစုကကုန်ကျစရိတ် parameters တွေကို (ဥပမာ ကုန်ကျစရိတ် ) ကိုဖြတ်သန်းသွားမှာပါ, ဒါပေမယ့်အရင်ခရီးဟာအရင်ခရီးမှာတူညီတဲ့ကုန်ကျစရိတ်ကိုသုံးပြီးပါက function ကို "rehashing လိုအပ်တယ်" လို့တရားစီရင်လိမ့်မည်မဟုတ်ပါ။ သင် ['Cape Cap' => 10 ကို ရေးထား ရင်တောင်,

 $hash = password_hash('mypassword', PASSWORD_BCRYPT, ['cost' => 10]);
$needsRehash = password_needs_rehash($hash, PASSWORD_BCRYPT, ['cost' => 10]);
// ရလဒ်နေဆဲဖြစ်ပါတယ် false,ပြောင်းလဲမှုမရှိ

4 ။ မွမ်းမံမှုများလိုအပ်သည်ကိုမည်သို့မှန်ကန်စွာဆုံးဖြတ်ရန်နည်း

အပြောင်းအလဲများပေါ်ပေါက်လာသည့်အခါသင်၏ဆေးထည့်သောမဟာဗျူဟာကိုမှန်ကန်စွာရိပ်မိရန်သေချာစေရန်အောက်ပါအလေ့အကျင့်များကိုအကြံပြုသည်။

  1. ရှင်းရှင်းလင်းလင်း algorithms အသစ်ကို set up ( Password_Bcrypt မှ password_gargon2id သို့),

  2. အထူးသဖြင့်ကုန်ကျစရိတ် parameters များကို 10 မှ 12 အထိ တိုးမြှင့ ်ခြင်းကဲ့သို့အဆင့်မြှင့်တင်ခြင်း။

  3. ဖြစ်နိုင်လျှင်မူရင်း Hash မူဝါဒကိုစည်းလုံးညီညွတ်ရေးအဆင့်မြှင့်တင်မှုအတွက်ပြင်ဆင်မှုကိုပြင်ဆင်ပါ။

 $hash = password_hash('mypassword', PASSWORD_ARGON2ID);
$needsRehash = password_needs_rehash($hash, PASSWORD_ARGON2ID, [
    'memory_cost' => 1<<17,
    'time_cost' => 4,
    'threads' => 2
]);

v. အကြံပြုချက်များ debugging

Password_needs_Rehash သည်မျှော်လင့်ထားသည့်အတိုင်းအလုပ်မဖြစ်ပါကသင်စစ်ဆေးရန် debugging စဉ်အတွင်း hash string ကိုထုတ်ယူနိုင်သည်။ hash ရှေ့ဆက်များသည်များသောအားဖြင့်အသုံးပြုသော algorithm ကိုကိုယ်စားပြုသည်။

  • $ 2Y $ bcrypt ကိုဆိုလိုသည်

  • $ argon2id $ ဆိုသည်မှာ argon2id ကို ဆိုလိုသည်

algorithm အသစ်ကိုအမှန်တကယ်ဤရှေ့ဆက်များကိုကြည့်ခြင်းအားဖြင့်အမှန်တကယ်အသုံးပြုသည်ကိုသင်စစ်ဆေးနိုင်သည်။

ထို့အပြင်လက်ရှိပြင်ဆင်မှုသည် logging မှတဆင့် output output ကိုဖြစ်နိုင်ပါသည်။ သို့မဟုတ်လက်ရှိအသုံးပြုသော hash ပေါ်လစီကိုစစ်ဆေးရန်နောက်ခံစီမံခန့်ခွဲမှုစာမျက်နှာကိုဖန်တီးနိုင်သည်။

6 ။ နိဂုံးချုပ်

Password_NEDS_REHAH သည်အကူးအပြောင်းစကားဝှက်ကိုဆေးကြောခြင်းနည်းဗျူဟာကိုချောမွေ့စေနိုင်သည့်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော်၎င်းသည်မှော်အတတ်မဟုတ်ပါ။ ၎င်းသည်ကွဲပြားခြားနားမှုများကိုဆုံးဖြတ်ရန်သင်ပေးသော parametersters ပေါ်တွင်မူတည်သည်။ အမှားပြုမိလျှင် Hash ခေတ်နောက်ကျနေလျှင်ပင် update ကိုမလိုအပ်ပါဟုထင်ကောင်းထင်လိမ့်မည်။ ထို့ကြောင့်, ဆေးထည့်သောမဟာဗျူဟာဖွဲ့စည်းမှုကိုရှင်းလင်းစွာထိန်းသိမ်းထားနိုင်ခြင်းသည် function ၏ထိရောက်မှုကိုသေချာစေရန်သော့ချက်ဖြစ်သည်။

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