လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> လုံခြုံသောအသုံးပြုသူစစ်မှန်ကြောင်းကိုအတွက် hash_equals function ကိုသုံးပါ

လုံခြုံသောအသုံးပြုသူစစ်မှန်ကြောင်းကိုအတွက် hash_equals function ကိုသုံးပါ

gitbox 2025-05-29

PHP တွင်အသုံးပြုသူ authentication သည်လုံခြုံစိတ်ချရသော application များတည်ဆောက်ခြင်း၏အခြေခံ link ဖြစ်သည်။ စကားဝှက်များသို့မဟုတ်တိုကင်များကိုနှိုင်းယှဉ်သောအခါအန္တရာယ်ကင်းသော string နှိုင်းယှဉ်ချက်သည်အချိန်ကိုတိုက်ခိုက်သူအားအထိခိုက်မခံသောသတင်းအချက်အလက်များကိုအများအားဖြင့်အယောင်ဆောင်နိုင်ရန်ခွင့်ပြုနိုင်သည်။ PHP သည် function hash_equals () ကိုအထူးဒီဇိုင်းပြုလုပ်ထားသည်။ ထိုသို့သောတိုက်ခိုက်မှုများကိုကာကွယ်ရန်အတွက်အထူးဒီဇိုင်းပြုလုပ်ထားသည်။

ဘုံလုံခြုံရေးအန္တရာယ်များကိုရှောင်ရှားရန်အတွက် Hash_equals () function ကိုမည်သို့အသုံးပြုရမည်ကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။


1 ။ အချိန်ကိုက်တိုက်ခိုက်မှုဆိုတာဘာလဲ။

Time Attacker သည်တိုက်ခိုက်သူအားတိုက်ခိုက်သူကိုရည်ညွှန်းသည်။

ရိုးရာ string ကိုနှိုင်းယှဉ်ခြင်း function များ (ဥပမာ - == သို့မဟုတ် strcmp ) သည်ပုံမှန်အတိုင်းမအောင်မြင်သည့်အခါတတ်နိုင်သမျှအမြန်ဆုံးပြန်လာပါလိမ့်မည်။


2 ။ Hash_equals () PHP တွင်

Hash_equals () သည် PHP 5.6 နှင့်အထက်တွင်ဖော်ပြထားသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Refens ည့်သည်များကွဲပြားမှုများကြောင့်သတင်းအချက်အလက်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်ကြိုးကြိုးနှစ်ချောင်းကိုစဉ်ဆက်မပြတ်နှိုင်းယှဉ်ရန်ဒီဇိုင်းပြုလုပ်ထားသည်။

function ရှေ့ပြေးပုံစံ:

 bool hash_equals(string $known_string, string $user_string)
  • $ Meathstring : လူသိများသော string ကို (များသောအားဖြင့်သိုလှောင်ထားသည့် hash value) ။

  • $ user_string : အသုံးပြုသူမှထည့်သွင်းထားသော string ကို (အတည်ပြုရန်လိုအပ်သည့်တန်ဖိုး) ။

ကြိုးနှစ်ချောင်းသည်တန်းတူဖြစ်ပါက စစ်မှန် ပါ


3 ။ SHOHH_EQUQUANS () ကို Secure authentication ကိုအကောင်အထည်ဖော်ရန်

အသုံးပြုသူမှတ်ပုံတင်သည့်အခါကျွန်ုပ်တို့တွင်စကားဝှက်ကို hashed နှင့်လုံခြုံရေး algorithm ကို သုံး. သိုလှောင်ထားရှိသည်ဟုဆိုပါစို့။ 0 င်ရောက်သောအခါအသုံးပြုသူမှထည့်သွင်းထားသောစကားဝှက်ကိုအတည်ပြုရန်လိုအပ်သည်။

နမူနာကုဒ်:

 <?php
// ဘယ်အချိန်မှာအသုံးပြုသူမှတ်ပုံတင်ပါ,စကားဝှက် Hash ကိုဒေတာဘေ့စ်သို့သိမ်းထားပါ
$password = 'user_password123';
$hashed_password = password_hash($password, PASSWORD_DEFAULT);

// အသုံးပြုသူအတွက် logs အခါ,စကားဝှက်ကိုစစ်ဆေးပါ
$input_password = $_POST['password'] ?? '';

// စကားဝှက်ကိုစစ်ဆေးပါ
if (password_verify($input_password, $hashed_password)) {
    // ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသော hash string ကိုထုတ်ယူပါ
    $stored_hash = $hashed_password;
    // အသုံးပြုသူ၏စကားဝှက်ကိုနှိုင်းယှဉ်ပါ(ဒီနေရာမှာသရုပ်ပြမြင်ကွင်းကိုဒီနေရာမှာ Verification Tokens နဲ့တခြားအခြေအနေတွေပါ)
    $input_hash = hash('sha256', $input_password);

    // အသုံးပြု hash_equals စဉ်ဆက်မပြတ်အချိန်နှိုင်းယှဉ်
    if (hash_equals($stored_hash, $input_hash)) {
        echo "အောင်မြင်သောလက်မှတ်";
    } else {
        echo "authentication မအောင်မြင်ပါ";
    }
} else {
    echo "authentication မအောင်မြင်ပါ";
}
?>

မှတ်ချက် - အထက်ဖော်ပြပါဥပမာတွင် password_verify () သည် password leash နှင့် hash_equals () သည် API တိုကင်များသို့မဟုတ်စိတ်ကြိုက် hash တန်ဖိုးများကိုအတည်ပြုရန်အတွက်သင့်တော်သောအခြေအနေများအတွက်လုံခြုံစွာမှန်ကန်စွာအတည်ပြုခဲ့သည်။


4 ။ API တိုကင်အတည်ပြုချက်အတွက်လုံခြုံရေးဥပမာများ

ဖြစ်နိုင်ခြေအတော်များများတွင်အသုံးပြုသူမှဖြတ်သန်းသော API Token သည်ဆာဗာတွင်သိမ်းဆည်းထားသောတိုကင်နှင့်ကိုက်ညီမှုရှိ, မရှိကိုစစ်ဆေးရန်လိုအပ်သည်။ သင် == ကို တိုက်ရိုက်အသုံးပြုပါကအချိန်တိုက်ခိုက်မှုအန္တရာယ်ရှိသည်။

ဥပမာ -

 <?php
// ဆာဗာဘေးထွက်သိုလှောင်မှုAPIလက်ခဏာသက်သေ
$stored_token = 'abc123def456';

// 用户提交的လက်ခဏာသက်သေ
$provided_token = $_GET['token'] ?? '';

// လုံခြုံနှိုင်းယှဉ်ပါ
if (hash_equals($stored_token, $provided_token)) {
    echo "လက်ခဏာသက်သေ验证通过";
} else {
    echo "လက်ခဏာသက်သေ验证失败";
}
?>

ဤနည်းအားဖြင့်တိုကင်များသည်မကိုက်ညီပါကပင်တိုက်ခိုက်သူသည်အချိန်ကုန်ခြင်းလုပ်ငန်းစဉ်ကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်မှန်ကန်သောအမှတ်အသားကိုမထုတ်နိုင်ပါ။


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

  • Hash_equals () သည် အချိန်တိုက်ခိုက်မှုများကိုတားဆီးသောစဉ်ဆက်မပြတ် string ကိုနှိုင်းယှဉ်ပေးသည်။

  • စကားဝှက်ကိုစစ်ဆေးမှုတွင် password_hash () နှင့် password_verify () နှင့် hassh_equals () ကို အသုံးပြုရန်အကြံပြုသည်။

  • စီစဉ်ထားသော hash_equals () ကို အသုံးပြု. စစ်မှန်ကြောင်းအထောက်အထားပြသခြင်းလုပ်ငန်းစဉ်၏လုံခြုံရေးကိုသိသိသာသာတိုးတက်စေပြီးအထိခိုက်မခံသောသတင်းအချက်အလက်ယိုစိမ့်မှုအန္တရာယ်ကိုလျှော့ချနိုင်သည်။


PHP လုံခြုံရေးအသိအမှတ်ပြုလက်မှတ်ကိုပိုမိုလေ့လာလိုပါက https://gitbox.net/php-security သို့ဝင်ရောက်ကြည့်ရှုနိုင်သည်။