0 က်ဘ်အပလီကေးရှင်းများတွင် Session စီမံခန့်ခွဲမှုသည်အသုံးပြုသူအချက်အလက်များ၏လုံခြုံရေးနှင့် application များ၏ပုံမှန်လည်ပတ်မှုများကိုသေချာစေရန်အရေးကြီးသောယန္တရားတစ်ခုဖြစ်သည်။ သင့်လျော်သောလုံခြုံရေးအစီအမံများမရှိဘဲပြင်းထန်သောအားနည်းချက်များကိုဖြစ်ပေါ်နိုင်သည်။ ထို့ကြောင့် PHP Session Management Security Policy ကိုနားလည်ရန်နှင့်အကောင်အထည်ဖော်ရန်အလွန်အရေးကြီးသည်။ ဤဆောင်းပါးသည် developer များပိုမိုကောင်းမွန်စွာကာကွယ်ရန်အတွက်အဓိက PHP Session Management Security Perments 5 ခုကိုလေ့လာလိမ့်မည်။
Session ID ကိုများသောအားဖြင့် cookie တွင်သိမ်းဆည်းထားသည်။ scripts များကို cookies များကို 0 င်ရောက်ခြင်းနှင့် XSS တိုက်ခိုက်မှုအန္တရာယ်ကိုလျှော့ချရန်တားဆီးရန်အတွက် cookies များကို HTTPS မှကူးစက်ပြီး Httponly နှင့်လုံခြုံသောအလံများကိုဖွင့်ထားသည်။ PHP တွင်လုံခြုံသော cookies များကိုမည်သို့ပြင်ဆင်ရမည်နည်း။
ini_set
('session.cookie_secure', true);
ini_set
('session.cookie_httponly', true);
တစ် ဦး session တစ်ခုအတွက်ကျိုးကြောင်းဆီလျော်သောဘဝသံသရာတစ်ခုသတ်မှတ်ရန်အလွန်အရေးကြီးပါသည်။ အချိန်ကြာမြင့်စွာအစည်းအဝေးများသည်အစည်းအဝေးပြန်ပေးဆွဲမှုအန္တရာယ်များကိုတိုးပွားစေနိုင်သည်။ ယေဘုယျအားဖြင့်အစည်းအဝေး၏တရားဝင်မှုကာလကိုမိနစ် 30 အထိသတ်မှတ်ခြင်းသည်ပိုမိုသင့်လျော်သောရွေးချယ်မှုဖြစ်သည်။
session_set_cookie_params([
'lifetime'
=> 1800,
// 30分钟
]);
Session Regeneration ယန္တရားကို Session ပြန်ပေးဆွဲရေးတိုက်ခိုက်မှုများကိုကာကွယ်ရန်အသုံးပြုသည်။ Session ID အသစ်တစ်ခုကိုထုတ်လုပ်ခြင်းနှင့် Session ID ကိုဖျက်ဆီးခြင်းအားဖြင့်အန္တရာယ်ရှိသော ID ကိုဖျက်ဆီးခြင်းဖြင့်အန္တရာယ်ရှိသောအသုံးပြုသူများသည်ဝယ်ယူထားသော Session ID ကို အသုံးပြု. တိုက်ခိုက်မှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။
session_regenerate_id(true);
Cross-site တောင်းဆိုခြင်းအတုတိုက်ခိုက်မှုများသည်အသုံးပြုသူ၏မည်သူမည်ဝါဖြစ်ကြောင်းသတင်းအချက်အလက်များကိုအန္တရာယ်ရှိသောတောင်းဆိုမှုများကိုတင်ပြရန်အသုံးပြုသူ၏အထောက်အထားများကိုအသုံးပြုသည်။ ဤတိုက်ခိုက်မှုကိုတားဆီးရန်တင်သွင်းမှုတစ်ခုစီသည်တရားဝင်ဖြစ်ကြောင်းသေချာစေရန် CSRF တိုကင်ဆန့်ကျင်ရေးကိုပုံစံဖြင့်ထည့်သွင်းနိုင်သည်။
<?php
$token
= bin2hex(random_bytes(16));
$_SESSION
['csrf_token'] =
$token
;
?>
ရိုးရာဖိုင်သိုလှောင်မှုနည်းလမ်းများနှင့်နှိုင်းယှဉ်လျှင်ဒေတာဘေ့စ်တွင် session data များကိုသိမ်းဆည်းရန်ပိုမိုလုံခြုံသည်။ ဒေတာဘေ့စသိုလှောင်မှုသည်ဒေသဆိုင်ရာတိုက်ခိုက်သူများကိုပရော်ဖက်ရှင်နယ်ဆိုင်ရာအချက်အလက်များကိုရယူခြင်းမှကာကွယ်နိုင်သည်။ ဒေတာဘေ့စသိုလှောင်မှုအစည်းအဝေးများအသုံးပြုရန် PHP ကိုမည်သို့ပြင်ဆင်ရမည်နည်း။
ini_set
('session.save_handler', 'user');
session_set_save_handler(...);
ဤတွင် Session စီမံခန့်ခွဲမှုမဟာဗျူဟာကိုမည်သို့အကောင်အထည်ဖော်မည်ကိုပြသသည့်ရိုးရှင်းသော login form project project ဥပမာတစ်ခု -
if
($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['username']) && isset($_POST['password'])) {
// 验证登录凭证
if
(authenticate($_POST['username'], $_POST['password'])) {
session_start();
$_SESSION
['username'] =
$_POST['username'];
header('Location: dashboard.php');
exit;
}
else
{
// 处理登录失败
}
}
PHP Session စီမံခန့်ခွဲမှု၏လုံခြုံရေးကိုသေချာစေရန် developer များသည်လုံခြုံရေးခြိမ်းခြောက်မှုများမှအသုံးပြုသူအစည်းအဝေးများကိုကာကွယ်ရန်အထက်ပါမူဝါဒများကိုလိုက်နာသင့်သည်။ လုံခြုံစိတ်ချရသော cookies များကိုဖွင့်ခြင်းအားဖြင့်ကျိုးကြောင်းဆီလျော်သော session life cycle ကိုချိန်ညှိခြင်း, CSRF တိုက်ခိုက်မှုများကိုကာကွယ်ရန်နှင့်အစည်းအဝေးအချက်အလက်များကိုသိမ်းဆည်းရန်ဒေတာဘေ့စ်ကိုအသုံးပြုခြင်းအားဖြင့်တိုးတက်လာနိုင်သည်။