PHP တွင် Hash_equals သည်ကြိုးနှစ်ချောင်းသည်တန်းတူဖြစ်စေနှိုင်းယှဉ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဒါဟာမကြာခဏ hash တန်ဖိုးများကိုအတည်ပြုသည့်အခါအချိန်တိုက်ခိုက်မှုတားဆီးဖို့အသုံးပြုလေ့ရှိသည်။ နှိုင်းယှဉ်ခြင်းဖြစ်စဉ်သည်စဉ်ဆက်မပြတ်သေချာစေရန်ကြိုးကြိုးနှစ်ချောင်းတစ်ခုစီကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်လုံခြုံမှုကိုတိုးတက်စေသည်။
သို့သော်အချို့ဖြစ်ရပ်များတွင် developer များက hash_equals မကြာခဏအသုံးပြုခြင်းသည်မှတ်ဥာဏ်အသုံးပြုမှုနှင့်မှတ်ဉာဏ်ယိုစိမ့်မှုများတွင်ပုံမှန်မဟုတ်သောတိုးတက်မှုနှုန်းကိုဖြစ်ပေါ်စေနိုင်သည်ဟုတွေ့ရှိခဲ့ကြသည်။ ဤဆောင်းပါးသည်ဖြစ်နိုင်ချေရှိသောအကြောင်းရင်းများကိုခွဲခြမ်းစိတ်ဖြာပြီးမှတ်ဉာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်အကြံပြုချက်များပေးပါလိမ့်မည်။
hash_equals (string ကို $ user_string $ user_string): Bool
လုပ်ဆောင်ချက် - ကြိုးနှစ်ချောင်းသည်တန်းတူရှိမရှိလုံခြုံစွာနှိုင်းယှဉ်ပါ။
လျှောက်လွှာအခြေအနေများ - Password Hash နှိုင်းယှဉ်ချက်, API လက်မှတ်အတည်ပြုခြင်းစသည်တို့ကို
နမူနာကုဒ်:
<?php
$known = '5f4dcc3b5aa765d61d8327deb882cf99';
$userInput = '5f4dcc3b5aa765d61d8327deb882cf99';
if (hash_equals($known, $userInput)) {
echo "အောင်မြင်စွာကိုက်ညီပါ";
} else {
echo "ပွဲစဉ်မအောင်မြင်ပါ";
}
?>
PHP ကိုယ်တိုင်က hash_tequals ကိုအကောင်အထည်ဖော်ရာတွင်အတော်လေးတည်ငြိမ်သော်လည်းအချို့သော extensions သို့မဟုတ် php ၏တိကျသောဗားရှင်းများကိုအသုံးပြုပါကပြန်လည်မွေးမီမှတ်ဉာဏ်ပေါက်ကြားမှုများရှိနိုင်သည်။
Hash_equals နှစ်ခုစလုံးသည် parameters တွေကိုနှစ်ခုလုံးအတွက်ကြိုးများရှိပြီးတူညီသောအရှည်ဖြစ်သင့်သည်။ string မဟုတ်သောသို့မဟုတ်မတူညီသောအရှည် parameters များကိုဖြတ်သန်းခြင်းသည်မှတ်ဥာဏ်ခြွင်းချက်များကိုဖြစ်ပေါ်စေနိုင်သည်။
Hash_equals များသည် ကြီးမားသောကြိုးများနှင့် variable များကိုထပ်ခါတလဲလဲဟုထပ်ခါတလဲလဲဟုအကြိမ်ကြိမ်ခေါ်ယူသောအခါ memory တိုးတက်မှုနှုန်းပေါ်ပေါက်လာနိုင်သည်။
၎င်းတို့သည်ကြိုးများဖြစ်ကြောင်းနှင့်တူညီသောအရှည်ရှိရန်မတောင်းဆိုမီဝင်လာသော parameter များကိုစစ်ဆေးပါ, သွယ်ဝိုက်ပြောင်းလဲခြင်းကြောင့်ဖြစ်နိုင်ချေရှိသောပြ problems နာများကိုရှောင်ကြဉ်ပါ။
<?php
function safe_hash_equals($known, $user) {
if (!is_string($known) || !is_string($user)) {
return false;
}
if (strlen($known) !== strlen($user)) {
return false;
}
return hash_equals($known, $user);
}
?>
ရှည်လျားသောပြေး scripts သို့မဟုတ် loops များတွင်မလိုအပ်သော variable ည့်သည်များကိုးကားချက်များနှင့်အချိန်မီသန့်ရှင်းသောမှတ်ဉာဏ်ကိုရှောင်ကြဉ်ပါ။
<?php
for ($i = 0; $i < 100000; $i++) {
$known = 'hash_value_here';
$user = getUserInput(); // ဒီ input ကိုရရှိသွားတဲ့ function ကိုဖြစ်ပါတယ်ယူဆ
safe_hash_equals($known, $user);
unset($user);
// ဒါ့အပြင်ရရှိနိုင်ပါသည် gc_collect_cycles() အတင်းအဓမ္မအမှိုက်စုဆောင်းမှု(သတိနှင့်အတူသုံးပါ)
}
?>
Memory Memory Managements ပြ issues နာများစွာကို PHP ဗားရှင်းအသစ်တွင်တပ်ဆင်ထားပြီးနောက်ဆုံးတည်ငြိမ်သောဗားရှင်းကိုအသုံးပြုရန်အကြံပြုသည်။ သက်ဆိုင်ရာ extensions ၏ update status ကိုလည်းစစ်ဆေးပါ။
ဖြစ်နိုင်လျှင်ရလဒ်များကို cache သို့မဟုတ်မှတ်ဥာဏ်ဖိအားကိုလျှော့ချရန် Hash_equals သို့ ထပ်ခါတလဲလဲခေါ်ဆိုမှုများကိုရှောင်ကြဉ်ပါ။
hash_equals သည် PHP တွင်ကြိုးမဲ့များနှင့်နှိုင်းယှဉ်လျှင်လုံခြုံစိတ်ချရသောအထောက်အကူဖြစ်သည်။ မှတ်ဥာဏ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်သော့ချက်မှာ -
parameters တွေကိုတရားဝင်နှင့်အမျိုးအစားနှင့်အရှည်ကိုက်ညီသေချာအောင်လုပ်ပါ။
ကျိုးကြောင်းဆီလျော် variable တွေကိုကိုင်တွယ်ခြင်းနှင့်အချိန်မီထုံးစံ၌မှတ်ဉာဏ်ကိုလွှတ်ပေးရန်။
PHP နှင့်ဆက်စပ်သော extensions ၏နောက်ဆုံးထွက်ဗားရှင်းကိုသုံးပါ။
မလိုအပ်သောထပ်တူခေါ်ဆိုမှုများကိုလျှော့ချပါ။
ဤအချက်သည်စနစ်စွမ်းဆောင်ရည်အပေါ်မှတ်ဉာဏ်ယိုစိမ့်မှု၏အကျိုးသက်ရောက်မှုကိုရှောင်ရှားနေစဉ်ဤအချက်သည် application ၏လုံခြုံရေးကိုဖြစ်နိုင်သမျှအတိုင်းအတာအထိသေချာစေနိုင်သည်။
PHP လုံခြုံရေးလုပ်ဆောင်ချက်များကို အသုံးပြု. ပိုမိုလေ့လာလိုပါက HTTPS://gitbox.net/php-phip-untunctionion.html သို့သွားသောတရားဝင်စာရွက်စာတမ်းများနှင့်လူထုအလေ့အကျင့်များကိုကြည့်ပါ။ အသေးစိတ်အတွက်။