လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> နောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင် password လုံခြုံရေးအဆင့်မြှင့်တင်ရန် Password_needs_Rehash function ကိုမည်သို့ပေါင်းစပ်ရမည်နည်း။

နောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင် password လုံခြုံရေးအဆင့်မြှင့်တင်ရန် Password_needs_Rehash function ကိုမည်သို့ပေါင်းစပ်ရမည်နည်း။

gitbox 2025-06-08

ခေတ်သစ် backend စီမံခန့်ခွဲမှုစနစ်များတွင်အသုံးပြုသူစကားဝှက်များ၏လုံခြုံရေးသည်အလွန်အရေးကြီးသည်။ Password Hashing algorithms စဉ်ဆက်မပြတ် update နှင့်တိုးတက်မှုနှင့်အတူ, hashing algorithms ၏စဉ်ဆက်မပြတ်အဟောင်းကိုလုံခြုံရေးအန္တရာယ်များရှိနိုင်ပါသည်။ PHP PHP PASSWORE_NEEDS_REHASH function ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်လုံခြုံမှုနှင့်အဆင်ပြေသောစကားဝှက်အဆင့်မြှင့်တင်ရေးယန္တရားကို password_hash နှင့် password_verify function များကိုရရှိနိုင်သည်။

ဤဆောင်းပါးသည် Password_needs_Rehash untion function ကိုနောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင်အသုံးပြုသူစကားဝှက်များကိုအလိုအလျောက်လုံခြုံရေးကိုအလိုအလျောက်အဆင့်မြှင့်တင်ခြင်းကိုအလိုအလျောက်အဆင့်မြှင့်တင်ရန်မည်သို့ပေါင်းစပ်မည်နည်း။


1 ။ password_needs_Rehash function ကိုမိတ်ဆက်

Password_NEDS_REHAH သည် PHP 5.5.0 တွင်ပါ 0 င်သည့်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 bool password_needs_rehash ( string $hash , int|string $algo [, array $options = [] ] )
  • $ hash : ရှိပြီးသားစကားဝှက် hash string ကို။

  • $ algo : Password_Default (သို့) စကားဝှက်_bcrypt စသည့်မျှော်လင့်ထားသည့် Hash algorithm ။

  • $ ရွေးစရာများ - Hash ၏ကုန်ကျစရိတ် (ရှုပ်ထွေး) ကဲ့သို့သော algorithm parameters များ။

ရှိပြီးသား hash သည်လက်ရှိသတ်မှတ်ထားသော algorithm သို့မဟုတ် parameter ကိုမကိုက်ညီပါက function သည် မှန်ကန်ကြောင်း ဖော်ပြသည်။


2 ။ Password_needs_Rehash ကိုဘာကြောင့်ပေါင်းစည်းဖို့လိုသလဲ။

နောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင်သုံးစွဲသူ၏စကားဝှက်ကိုများသောအားဖြင့် hashed နှင့်ဒေတာဘေ့စ်တွင်သိုလှောင်ထားသည်။ PHP ဗားရှင်းသို့မဟုတ်လုံခြုံရေးလိုအပ်ချက်များတိုးတက်လာခြင်းနှင့်အတူပိုမိုကောင်းမွန်သောဆေးထည့်ခြင်း algorithms သို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်သို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်များသို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်များသို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်ကိုအကြံပြုသည်။ အချိန်မီမွမ်းမံပါကစကားဝှက် hash သည်အက်ကွဲရန်အန္တရာယ်ရှိနိုင်သည်။

စကားဝှက် hash ကိုရိုးရာနည်းလမ်းဖြင့်မွမ်းမံခြင်းအားဖြင့်အသုံးပြုသူများသည်လုံခြုံရေးနှင့်သုံးစွဲသူအတွေ့အကြုံများကိုလျော့နည်းစေသောသူတို့၏စကားဝှက်များကိုတက်ကြွစွာပြုပြင်ရန်လိုအပ်သည်။ ပေါင်းစည်းထားသော password_needs_Rehash မှတစ်ဆင့်အသုံးပြုသူမှတ်တမ်းများ 0 င်ရောက်သောအခါစကားဝှက် Hash status ကိုရှာဖွေတွေ့ရှိနိုင်သည်။


3 ။ ပေါင်းစည်းမှုခြေလှမ်းသရုပ်ပြ

အောက်ဖော်ပြပါသည်ပုံမှန်အားဖြင့် password_needs_Rehash ကို အလိုအလျှောက်အကောက်ခွန်အဆင့်မြှင့်တင်ရန် - Password_needs_Rehash ကိုပေါင်းစပ်သည်။

 <?php
// ဒေတာဘေ့စ်ချိတ်ဆက်ကြောင်းယူဆ,နှင့်အသုံးပြုသူမှတ်တမ်းများကိုရယူပါ
$username = $_POST['username'];
$password = $_POST['password'];

// အသုံးပြုသူစကားဝှက် hash ကိုဒေတာဘေ့စ်မှရယူပါ
$stmt = $pdo->prepare('SELECT id, password_hash FROM users WHERE username = ?');
$stmt->execute([$username]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if ($user) {
    // စကားဝှက်ကိုစစ်ဆေးပါ
    if (password_verify($password, $user['password_hash'])) {
        // စကားဝှက် Hash ကိုပြန်လည်ထူထောင်ရန်လိုအပ်ပါသလားစစ်ဆေးပါ
        if (password_needs_rehash($user['password_hash'], PASSWORD_DEFAULT)) {
            // Password Hash Regenerate
            $newHash = password_hash($password, PASSWORD_DEFAULT);
            
            // ဒေတာဘေ့စ်တွင်စကားဝှက် hash ကို update လုပ်ပါ
            $updateStmt = $pdo->prepare('UPDATE users SET password_hash = ? WHERE id = ?');
            $updateStmt->execute([$newHash, $user['id']]);
        }

        // အောင်မြင်စွာဝင်ပါ,နောက်ဆက်တွဲစစ်ဆင်ရေးလုပ်ဆောင်ပါ
        echo "အောင်မြင်စွာဝင်ပါ";
    } else {
        // စကားဝှက်
        echo "用户名或စကားဝှက်";
    }
} else {
    // အသုံးပြုသူမတည်ရှိပါဘူး
    echo "用户名或စကားဝှက်";
}
?>

ဥပမာ -

  • စကားဝှက်ကို password_verify ကို မှတဆင့်အတည်ပြုပါ။

  • အကယ်. စကားဝှက်သည်မှန်ကန်ပါကစကားဝှက် hash ခေတ်မမီသေးသောရှိမရှိရှာဖွေရန် Password_needs_Rehash ကို ခေါ်ပါ။

  • လိုအပ်ပါကလက်ရှိအကြံပြုထားသည့် algorithm ကို အသုံးပြု. Hash ကိုပြန်လည်ထူထောင်။ ဒေတာဘေ့စ်ကိုမွမ်းမံပါ။

  • အသုံးပြုသူသည် Password Hashing Upgrade စနစ်လုံခြုံရေးကိုမြှင့်တင်ရန်အမြင်မရှိဘဲပြီးဆုံးသည်။


4 ။ တိုးတက်မှုအစီအစဉ်အကြံပြုချက်များ

  1. ဖွဲ့စည်းမှုစီမံခန့်ခွဲမှု ALGORIMM parameters များကို Configuration Constits ကို အသုံးပြု. ယူဆရစီမံခန့်ခွဲမှုစီမံခန့်ခွဲမှု algorithms နှင့်ကုန်ကျစရိတ် parameters တွေကိုနောက်ဆက်တွဲပြုပြင်ထိန်းသိမ်းမှုနှင့်ညှိနှိုင်းမှုကိုလွယ်ကူချောမွေ့စေရန်အမြဲတမ်းသတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့်:

 define('PASSWORD_ALGO', PASSWORD_DEFAULT);
define('PASSWORD_OPTIONS', ['cost' => 12]);

Login Verification စဉ်အတွင်းခေါ်

 if (password_needs_rehash($user['password_hash'], PASSWORD_ALGO, PASSWORD_OPTIONS)) {
    $newHash = password_hash($password, PASSWORD_ALGO, PASSWORD_OPTIONS);
    // ဒေတာဘေ့စကို update လုပ်ပါ
}
  1. PHP ဗားရှင်းကိုအချိန်မီအဆင့်မြှင့်ပါ PHP ဗားရှင်းကိုယနေ့အထိထားရှိပြီးတရားဝင်အကြံပြုထားသည့် encryption algorithms နှင့်တိုးတက်မှုများကို Levering ။

  2. အသုံးပြုသူစကားဝှက်မဟာဗျူဟာကိုအားဖြည့်ပေး Password Hash အဆင့်မြှင့်တင်ခြင်းနှင့် တွဲဖက်. နောက်ခံသည်အားနည်းသောစကားဝှက်များအန္တရာယ်ကိုလျှော့ချရန်ခိုင်မာသောစကားဝှက်မဟာဗျူဟာကိုအကောင်အထည်ဖော်သင့်သည်။


5 ။ အကျဉ်းချုပ်

Password_NEDS_REHASH_Rehash function ကိုနောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင်ထည့်သွင်းခြင်းအားဖြင့်၎င်းသည်လုံခြုံရေးဆိုင်ရာမူဝါဒများအဆင့်မြှင့်တင်မှုများနှင့်အတူ password hash ကိုအလိုအလျောက်အဆင့်မြှင့်တင်ခြင်းကိုထိထိရောက်ရောက်အဆင့်မြှင့်တင်ခြင်း, ဤနည်းလမ်းသည်အသုံးပြုသူအတွက်ဖော်ရွေသည်နှင့်အသုံးပြုသူသည်၎င်းကိုတက်ကြွစွာပြုပြင်မွမ်းမံခြင်းမရှိဘဲစကားဝှက်ကာကွယ်မှုကိုတိုးတက်စေနိုင်သည်။ ခေတ်သစ် PHP applications များတွင်စကားဝှက်စီမံခန့်ခွဲမှုအတွက်အကြံပြုထားသောအလေ့အကျင့်တစ်ခုဖြစ်သည်။