Web Development တွင်အသုံးပြုသူစကားဝှက်များကိုလုံခြုံသောသိုလှောင်မှုသည်အခြေခံနှင့်အရေးပါသောလုပ်ငန်းဖြစ်သည်။ သို့သော်လုံခြုံရေးဗဟုသုတတိုးပွားလာခြင်းများရှိသော်လည်း Developer များစွာသည် User Passwords ကိုစတင်ရန်သို့မဟုတ်ရိုးရှင်းသောစနစ်များကိုတည်ဆောက်သည့်အခါစာဝှက်ရန် MD5 () function ကိုအသုံးပြုကြသည်။ ယနေ့ကျွန်ုပ်တို့သည် MD5 ကို စကားဝှက်များသိမ်းဆည်းရန်အသုံးပြုသည်ဖြစ်စေ,
MD5 () သည် PHP တွင်တည်ဆောက်ထားသော Hash function တစ်ခုဖြစ်သည်။ ၎င်းသည်မည်သည့်အရှည်ကိုမဆို hexadecimal string ကိုတစ် ဦး အဖြစ်ပြောင်းလဲနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">md5</span></span><span>(</span><span><span class="hljs-string">'password123'</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း:482c811da5d5b4bc6d497ffa98491e38</span></span><span>
</span></span>
၎င်းသည်နောက်ကြောင်းပြန်လှည့်နိုင်သောဆေးထည့်ခြင်းလုပ်ငန်းစဉ် (သီအိုရီအရ) ဖြစ်သည်။ အစောပိုင်း developer များကအသုံးပြုသူများကိုသူတို့၏သိုလှောင်မှုတွင် "encrypted" သိမ်းဆည်းရန် "encrypt လုပ်ထား" သည်။
အဖြေမှာ - ၎င်းသည်လုံခြုံမှုမရှိသော ကြောင့်လွန်ခဲ့သောနှစ်ပေါင်းများစွာကဖယ်ရှားပစ်လိုက်သည်။
အဓိကအကြောင်းပြချက်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
MD5 () သည်မူလကဒေတာသမာဓိရှိမှုကိုအတည်ပြုရန်အသုံးပြုသော hash function တစ်ခုအနေဖြင့်ရည်ရွယ်ထားသည်။ သို့သော်၎င်းသည်သူတို့၏အမြန်နှုန်းကြောင့် brute force တိုက်ခိုက်မှုများသို့မဟုတ်သက်တန့်စားပွဲတင်တိုက်ခိုက်မှုများအတွက်အသုံးပြုရန်အလွန်လွယ်ကူသည်။
တိုက်ခိုက်သူများသည်မူရင်းစကားဝှက်ကိုခန့်မှန်းရန်အလွန်တိုတောင်းသောအချိန်များတွင်ပေါင်းစပ်မှုများစွာပြုလုပ်နိုင်သည်။
MD5 () သည်ဆုံးဖြတ်ချက်ချသည့်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ အသုံးပြုသူများနှစ် ဦး ၏စကားဝှက်များသည်အတူတူပါပဲဆိုပါကထုတ်လုပ်သည့် hash တန်ဖိုးသည်အတူတူပင်ဖြစ်ပြီးတိုက်ခိုက်သူသည်တစ်ချိန်ကအက်ကွဲရန်သာလိုအပ်သည်။
ဆားမပါဘဲ hash သိုလှောင်မှုနည်းလမ်းသည်သက်တံ့စားပွဲ၌ဖြိုဖျက်ရန်အလွန်လွယ်ကူသည်။
MD5 Hash နှင့် Plaintext Passwords အတွက်မြေပုံရေးဆွဲခြင်းဒေတာဘေ့စ်များအများအပြားရှိသည်။ ဥပမာအားဖြင့်, MD5 ('123456') မှရရှိသော hash တန်ဖိုးကိုရှာဖွေရေးအင်ဂျင်ထဲသို့ထည့်သွင်းရန်သာလိုအပ်သည်။ မူရင်းစကားဝှက်ကိုချက်ချင်းရှာတွေ့နိုင်သည်။
PHP သည် PHOP_HASH () နှင့် password_verify () formentsify () function များကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်လက်ရှိတွင်စကားဝှက်စာဝှက်ခြင်းနှင့်စိစစ်အတည်ပြုခြင်းအတွက်နည်းလမ်းများပြုလုပ်ရန်အကြံပြုပါသည်။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-comment">// စကားဝှက် hash ထုတ်လုပ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$hash</span></span><span> = </span><span><span class="hljs-title function_ invoke__">password_hash</span></span><span>(</span><span><span class="hljs-string">'password123'</span></span><span>, PASSWORD_DEFAULT);
</span><span><span class="hljs-comment">// စကားဝှက်ကိုစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">password_verify</span></span><span>(</span><span><span class="hljs-string">'password123'</span></span><span>, </span><span><span class="hljs-variable">$hash</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'စကားဝှက်မှန်'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'စကားဝှက်'</span></span><span>;
}
</span></span>
Password_Hash () သည် bcrypt algorithm ကိုပုံမှန်အားဖြင့် အသုံးပြု. ကျပန်းဆားတန်ဖိုးများကိုအလိုအလျောက်ထုတ်ပေးသည်။ Brute Force Cracking နှင့် Rainbow စားပွဲတင်တိုက်ခိုက်မှုများကိုတိုက်ခိုက်ရန်အတွက်တည်ဆောက်ထားသောယန္တရားများရှိသည်။
အလိုအလျောက်ဆားထည့်သွင်း
ပြင်ဆင်နိုင်သောတွက်ချက်မှုပြင်းထန်မှု (ကုန်ကျစရိတ်အချက်)
အရွယ်အစား (ထိုကဲ့သို့သော argon2 ကဲ့သို့သောကွဲပြားခြားနားသော algorithms ကိုထောက်ပံ့သည်)
တရားဝင်ပြုပြင်ထိန်းသိမ်းမှုသည်ခေတ်သစ်စကားဝှက်သိုလှောင်မှုစံနှုန်းများနှင့်ကိုက်ညီသည်
စကားဝှက်များကိုသိုလှောင်ရန် MD5 () ကိုအသုံးပြုခြင်းသည်ခေတ်နောက်ကျပြီးအန္တရာယ်ရှိသည်။ အစောပိုင်းစီမံကိန်းများတွင်ပိုမိုများပြားလာသော်လည်းယနေ့တွင်လုံခြုံမှုမရှိပေ။ ဆိုက်ဘာတိုက်ခိုက်မှုနည်းလမ်းများသည်ဆက်လက်အဆင့်မြှင့်တင်ခြင်းများဆက်လက်ဖြစ်ပွားနေသဖြင့် developer များကလုံခြုံရေးအယူအဆဟောင်းကိုစွန့်လွှတ်ပြီးခေတ်မီပြီးလုံခြုံစိတ်ချရသောနည်းလမ်းကို အသုံးပြု. အသုံးပြုသူစကားဝှက်များကိုလုပ်ဆောင်ရန်ပိုမိုခေတ်မီပြီးလုံခြုံသောနည်းလမ်းကိုအသုံးပြုသင့်သည်။
သတိရပါ - လုံခြုံရေးသည် encryption "ပေါ်တွင်မူတည်သည်မဟုတ်ဘဲဒီဇိုင်းပေါ်တွင်မူတည်သည်။
password_hash () ကို လက်ခံခြင်းနှင့် MD5 () ကိုငြင်းပယ်ခြင်းသည်အသုံးပြုသူဘေးကင်းရေးအတွက်အခြေခံအကျဆုံးလေးစားမှုဖြစ်သည်။