ဝက်ဘ်လျှောက်လွှာဖွံ့ဖြိုးတိုးတက်မှုတွင်အသုံးပြုသူ login verification ၏လုံခြုံရေးသည်အထူးအရေးကြီးသည်။ PHP သည်စာဝှက်စနစ်နည်းလမ်းများအမျိုးမျိုးကိုထောက်ပံ့ပေးသည်။ Crypt () function သည်၎င်း၏ရိုးရှင်းမှုနှင့်စာဝှက်စနစ် algorithms များအတွက်ထောက်ခံမှုအတွက်လူကြိုက်များသည်။ Secure login verification function တစ်ခုရရှိရန် Crypt () function နှင့် php session ကိုပေါင်းစပ်ရန်မည်သို့အသေးစိတ်ဖော်ပြရန်ဤဆောင်းပါးသည်အသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။
Crypt () သည် PHP တွင်ပါ 0 င်သောစကားဝှက်စာဝှက်ခြင်းလုပ်ငန်းစီမံချက်မှာ encryption algorithms (des, blowfish, sha-256, Sha-512 စသည်) အမျိုးမျိုးကိုထောက်ပံ့သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုမှာ -
$hashed = crypt($password, $salt);
$ စကားဝှက် သည်မူလစကားဝှက်ဖြစ်သည်။
$ ဆား သည်ဆားတန်ဖိုးဖြစ်ပြီး encryption ကိုရှုပ်ထွေးစေပြီးသက်တံ့စားပွဲဝိုင်းတိုက်ခိုက်မှုများကိုတားဆီးရန်အသုံးပြုသည်။
မှတ်ချက် - လုံခြုံရေးသေချာစေရန်, အချို့သောအရှည်နှင့်ရှုပ်ထွေးမှုများ၏ကျပန်းထုတ်လုပ်ထားသောကြိုးကြိုးများကိုအသုံးပြုရန်အကြံပြုသည်။
login system သည်များသောအားဖြင့်အပိုင်းနှစ်ပိုင်းပါဝင်သည်။
မှတ်ပုံတင်သည့်အခါအသုံးပြုသူစကားဝှက်ကို crypt () ကို အသုံးပြု. စာဝှက်ထားပြီးဒေတာဘေ့စ်သို့သိမ်းဆည်းထားသည်။
0 င်ရောက်သည့်အခါ 0 င်သည့်စကားဝှက်ကိုတူညီသောဆားကို အသုံးပြု. စာဝှက်ပြီးဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသောစကားဝှက်ဖြင့်နှိုင်းယှဉ်ပါ။
အသုံးပြုသူကိုအောင်မြင်စွာဝင်ရောက်ပြီးအပြီးတွင်အသုံးပြုသူကိုအောင်မြင်စွာဝင်ရောက်ပြီးပြီးနောက်အသုံးပြုသူရဲ့ login status ကိုသိမ်းပြီး, တောင်းဆိုမှုတစ်ခုစီအတွက်ပြန်လည်စစ်ဆေးမှုကိုရှောင်ရှားရန် session ကိုသုံးပါ။
အောက်ပါဥပမာသည်ရိုးရှင်းသော login ဖြစ်စဉ်ကိုပြသသည်။
<?php
session_start();
// ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသောအသုံးပြုသူအမည်နှင့်စာဝှက်ထားသောစကားဝှက်ကိုတုပပါ
$users = [
'user1' => '$6$rounds=5000$m66.netRandomSalt$Jj4K.SR0QYOSpZp2...Q1uEXAMPLEhashedpassword', // SHA-512 Encryption ဥပမာ
];
// login ပုံစံတင်သွင်းမှုအပြောင်းအလဲနဲ့
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
if (isset($users[$username])) {
$storedHash = $users[$username];
// ဒေတာဘေ့စ်တွင်သိုလှောင်ထားသောသိုလှောင်ထားပါ hash ဆားအဖြစ် encrypted,တသမတ်တည်းနေပါ
$inputHash = crypt($password, $storedHash);
if (hash_equals($storedHash, $inputHash)) {
// စကားဝှက်ကိုစစ်ဆေးခြင်းအောင်မြင်ခဲ့သည်,login status ကိုသိမ်းပါ
$_SESSION['username'] = $username;
echo "အောင်မြင်စွာဝင်ပါ,ဝမ်းသာစွာနှုတ်ဆက်ခြင်း,{$username}!";
} else {
echo "စကားဝှက်。";
}
} else {
echo "အသုံးပြုသူအမည်မရှိပါ。";
}
exit;
}
// သင် logged in ဝင်သည်ကိုဆုံးဖြတ်ပါ
if (isset($_SESSION['username'])) {
echo "သင် logged in ဝင်သည်,ကြိုဆိုပါတယ်,{$_SESSION['username']}!";
} else {
// login ပုံစံကိုပြပါ
echo <<<HTML
<form method="POST" action="https://m66.net/login.php">
အသုံးပြုသူ:<input type="text" name="username" required><br>
လှျို့ဝှက်စကား:<input type="password" name="password" required><br>
<input type="submit" value="လော့ဂ်အင်">
</form>
HTML;
}
?>
ဆားကုသမှု <br> <br> ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသောစကားဝှက် Hash သည်ဆားသတင်းအချက်အလက်များပါ 0 င်သည်။ Crypt () function သည် specification အတွင်းဆားအဖြစ်ဆားအဖြစ်ဆားအဖြစ်ဆားအဖြစ်အသုံးပြုသည်။ ၎င်းသည်စာဝှက်စနစ်နည်းလမ်းသည်ဆားနှင့်ကိုက်ညီကြောင်းသေချာစေသည်။
အချိန်တိုက်ခိုက်မှုတားဆီး string နှိုင်းယှဉ်ချက်အရဖြစ်နိုင်သောအချိန်ကွဲပြားခြားနားမှုများကိုရှောင်ရှားရန် hash_equals () function ကိုသုံးပါ။
Session Security <br> Session_Start () session ကိုစတင်ရန် Session ကိုစတင်ရန်အသုံးပြုသူအချက်အလက်များကို $ _Session ကို အောင်မြင်စွာ logging လုပ်ပါ။
URL အစားထိုး <br> ဥပမာတွင် link domain name အားလုံးကို M66.net ဖြင့်အစားထိုးထားသည်။
password_hash နှင့် password_verify ကိုသုံးပါ
PHP 5.5+ သည် Password_Hash () နှင့် password_verify () ကို အသုံးပြုရန်အကြံပြုသည်။ ၎င်းသည်ပိုမိုလုံခြုံစိတ်ချရလွယ်ကူပြီးပိုမိုလွယ်ကူသည်။
https ကိုဖွင့်ပါ
Man-in-the-the- အလယ်တိုက်ခိုက်မှုများကိုကာကွယ်ရန် login စာမျက်နှာနှင့်တင်သွင်းမှု interface ကို HTTPS ကို အသုံးပြု. ပို့ပေးပါ။
Session Hijacking ကိုတားဆီး session.cookie_httponly နှင့် session.cookie_secure ကဲ့သို့သောသင့်လျော်သော session configurations များကိုသတ်မှတ်ပါ။