ခေတ်သစ် backend စီမံခန့်ခွဲမှုစနစ်များတွင်အသုံးပြုသူစကားဝှက်များ၏လုံခြုံရေးသည်အလွန်အရေးကြီးသည်။ Password Hashing algorithms စဉ်ဆက်မပြတ် update နှင့်တိုးတက်မှုနှင့်အတူ, hashing algorithms ၏စဉ်ဆက်မပြတ်အဟောင်းကိုလုံခြုံရေးအန္တရာယ်များရှိနိုင်ပါသည်။ PHP PHP PASSWORE_NEEDS_REHASH function ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်လုံခြုံမှုနှင့်အဆင်ပြေသောစကားဝှက်အဆင့်မြှင့်တင်ရေးယန္တရားကို password_hash နှင့် password_verify function များကိုရရှိနိုင်သည်။
ဤဆောင်းပါးသည် Password_needs_Rehash untion 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 သည် မှန်ကန်ကြောင်း ဖော်ပြသည်။
နောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင်သုံးစွဲသူ၏စကားဝှက်ကိုများသောအားဖြင့် hashed နှင့်ဒေတာဘေ့စ်တွင်သိုလှောင်ထားသည်။ PHP ဗားရှင်းသို့မဟုတ်လုံခြုံရေးလိုအပ်ချက်များတိုးတက်လာခြင်းနှင့်အတူပိုမိုကောင်းမွန်သောဆေးထည့်ခြင်း algorithms သို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်သို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်များသို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်များသို့မဟုတ်ပိုမိုမြင့်မားသောကုန်ကျစရိတ်ကိုအကြံပြုသည်။ အချိန်မီမွမ်းမံပါကစကားဝှက် hash သည်အက်ကွဲရန်အန္တရာယ်ရှိနိုင်သည်။
စကားဝှက် hash ကိုရိုးရာနည်းလမ်းဖြင့်မွမ်းမံခြင်းအားဖြင့်အသုံးပြုသူများသည်လုံခြုံရေးနှင့်သုံးစွဲသူအတွေ့အကြုံများကိုလျော့နည်းစေသောသူတို့၏စကားဝှက်များကိုတက်ကြွစွာပြုပြင်ရန်လိုအပ်သည်။ ပေါင်းစည်းထားသော password_needs_Rehash မှတစ်ဆင့်အသုံးပြုသူမှတ်တမ်းများ 0 င်ရောက်သောအခါစကားဝှက် Hash status ကိုရှာဖွေတွေ့ရှိနိုင်သည်။
အောက်ဖော်ပြပါသည်ပုံမှန်အားဖြင့် 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 စနစ်လုံခြုံရေးကိုမြှင့်တင်ရန်အမြင်မရှိဘဲပြီးဆုံးသည်။
ဖွဲ့စည်းမှုစီမံခန့်ခွဲမှု 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 လုပ်ပါ
}
PHP ဗားရှင်းကိုအချိန်မီအဆင့်မြှင့်ပါ PHP ဗားရှင်းကိုယနေ့အထိထားရှိပြီးတရားဝင်အကြံပြုထားသည့် encryption algorithms နှင့်တိုးတက်မှုများကို Levering ။
အသုံးပြုသူစကားဝှက်မဟာဗျူဟာကိုအားဖြည့်ပေး Password Hash အဆင့်မြှင့်တင်ခြင်းနှင့် တွဲဖက်. နောက်ခံသည်အားနည်းသောစကားဝှက်များအန္တရာယ်ကိုလျှော့ချရန်ခိုင်မာသောစကားဝှက်မဟာဗျူဟာကိုအကောင်အထည်ဖော်သင့်သည်။
Password_NEDS_REHASH_Rehash function ကိုနောက်ခံစီမံခန့်ခွဲမှုစနစ်တွင်ထည့်သွင်းခြင်းအားဖြင့်၎င်းသည်လုံခြုံရေးဆိုင်ရာမူဝါဒများအဆင့်မြှင့်တင်မှုများနှင့်အတူ password hash ကိုအလိုအလျောက်အဆင့်မြှင့်တင်ခြင်းကိုထိထိရောက်ရောက်အဆင့်မြှင့်တင်ခြင်း, ဤနည်းလမ်းသည်အသုံးပြုသူအတွက်ဖော်ရွေသည်နှင့်အသုံးပြုသူသည်၎င်းကိုတက်ကြွစွာပြုပြင်မွမ်းမံခြင်းမရှိဘဲစကားဝှက်ကာကွယ်မှုကိုတိုးတက်စေနိုင်သည်။ ခေတ်သစ် PHP applications များတွင်စကားဝှက်စီမံခန့်ခွဲမှုအတွက်အကြံပြုထားသောအလေ့အကျင့်တစ်ခုဖြစ်သည်။