လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Session_regenate_id နှင့် Setcookie ကို PHP အစည်းအဝေးများအားပြန်ပေးဆွဲခြင်းမှကာကွယ်ရန်မည်သို့ပေါင်းစပ်မည်နည်း။

Session_regenate_id နှင့် Setcookie ကို PHP အစည်းအဝေးများအားပြန်ပေးဆွဲခြင်းမှကာကွယ်ရန်မည်သို့ပေါင်းစပ်မည်နည်း။

M66 2025-06-23

PHP တွင် Session Management သည်အသုံးပြုသူ authentication နှင့်လုံခြုံရေး၏အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ အသုံးပြုသူ၏ Session ID ကိုပြန်ပေးဆွဲခြင်းအားဖြင့်တိုက်ခိုက်သူသည် authentication ကိုကျော်လွှားနိုင်ပြီးကာကွယ်ထားသောအရင်းအမြစ်များကိုတိုက်ရိုက်ရယူနိုင်သည်။ Session ၏လုံခြုံရေးကိုမြှင့်တင်ရန် PHP သည် session_regenate_id () နှင့် setcookie () လုပ်ဆောင်ချက်များကိုထောက်ပံ့ပေးသည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုအသုံးပြုခြင်းသည် session hijacking ကိုထိရောက်စွာတားဆီးနိုင်သည်။

စကားပြောဆိုမှုပြန်ပေးဆွဲခြင်း၏အယူအဆ

Session Hijacking သည်တိုက်ခိုက်သူအားတရားဝင်အသုံးပြုသူတစ် ဦး ၏ session ID ကိုခိုးယူခြင်းနှင့်အန္တရာယ်ရှိသောလုပ်ရပ်များပြုလုပ်ရန်တိုက်ခိုက်သူကိုရည်ညွှန်းသည်။ များသောအားဖြင့်တိုက်ခိုက်သူများသည် XSS တိုက်ခိုက်မှုများ, ကွတ်ကီးများခိုးယူခြင်း,

session ပြန်ပေးဆွဲခြင်းကိုကာကွယ်ရန်ကျွန်ုပ်တို့သည် session တစ်ခုစီ၏အစတွင် session ID ကို update လုပ်ရန်လိုအပ်ပြီး session id ကိုဂီယာတွင် 0 င်ရောက်စွက်ဖက်ခြင်းမပြုရန်အစီအမံများပြုလုပ်ရန်လိုအပ်သည်။ Session_regenate_id () နှင့် Setcookie () PHP ရှိလုပ်ဆောင်ချက်များကို PHP မှလုပ်ဆောင်ချက်များသည်ဤရည်မှန်းချက်အောင်မြင်ရန်ခိုင်မာသောအထောက်အပံ့များပေးသည်။

1 ။ session_regenate_id () function ကိုသုံးပါ

PHP ၏ session_regenate_id () function သည် session တစ်ခုအတွင်းလက်ရှိ session ID ကိုပြောင်းလဲနိုင်သည်။ ၎င်းသည် session တစ်ခုစီအတွက် Session ID ကိုထူးခြားစေသည်။ တိုက်ခိုက်သူသည် Session ID ဟောင်းကိုခိုးယူခံရလျှင်ပင်နောက်ဆက်တွဲတောင်းဆိုမှုများတွင်အသုံးမပြုနိုင်ပါ။ session_regenate_id () ကို ပုံမှန်ခေါ်ဆိုခြင်းအားဖြင့်အစည်းအဝေးပြန်ပေးဆွဲခြင်းအန္တရာယ်ကိုသိသိသာသာလျှော့ချနိုင်သည်။

အသုံးပြုမှုဥပမာ -

 // session တစ်ခုစတင်ပါ
session_start();

// အစည်းအဝေးတစ်ခုချင်းစီတောင်းခံသည့်အခါတိုင်း regenerate အစည်းအဝေးများID
session_regenerate_id(true); // တေးရေးtrueအဟောင်း session ကိုဖိုင်များကိုဖျက်ခြင်းညွှန်ပြ,ယိုစိမ့်မှုကိုရှောင်ကြဉ်ပါ

// အသုံးပြုသူတောင်းဆိုမှုများကိုဆက်လက်လုပ်ဆောင်ပါ
echo "လက်ရှိ sessionID:" . session_id();

အထက်ပါကုဒ်တွင် session_regenate_id (trust) သည် Session ID ကိုအသစ်ပြောင်းသည်။ ဤနည်းအားဖြင့်တိုက်ခိုက်သူသည်မူလ session ID ကိုခိုးယူလျှင်ပင်သင်ခန်းစာကိုထပ်မံအသုံးမပြုပါ။

2 ။ sesscookie () function ကိုသုံးပါ

Setcookie () function ကို browser ၏ cookies များကိုသတ်မှတ်ရန်အသုံးပြုသည်။ Session ID များကိုများသောအားဖြင့် cookies များဖြင့်ဖြတ်သန်းလေ့ရှိပြီး Session ID ၏ cookies များ၏လုံခြုံရေးကိုသေချာစွာဆွေးနွေးခြင်းကိုတားဆီးရန်သော့ချက်ဖြစ်သည်။ Httponly နှင့် လုံခြုံသော ဂုဏ်သတ္တိများကိုသတ်မှတ်ခြင်းအားဖြင့်တိုက်ခိုက်သူများမှခိုးယူခံရသည့် session id ၏အန္တရာယ်ကိုလျှော့ချနိုင်သည်။

  • Httponly - JavaScript ကို cookies များကို 0 င်ရောက်ခြင်းမှကာကွယ်ပေးသည်။

  • လုံခြုံမှု - HTTPS ဆက်သွယ်မှုများကိုသာမလုံခြုံသော http connection တွင်ခိုးယူခြင်းမှကာကွယ်ရန် HTTPS ဆက်သွယ်မှုများ၌သာ cookies များကိုသာပို့ပါ။

အသုံးပြုမှုဥပမာ -

 // လုံခြုံအောင်ထားပါCookieဉစ်စာပစ္စည်းများ
$cookieParams = session_get_cookie_params();
setcookie(
    session_name(),        // 使用လက်ရှိ session的名称
    session_id(),          // ရုံးထိုင်အချိန်ကာလID
    time() + 3600,         // တည်ဆောက်သည်Cookieသက်တမ်းကုန်ဆုံးချိန်
    $cookieParams['path'], // Cookieလမ်းကြောင်း
    $cookieParams['domain'], // Cookieဒိုမိန်းအမည်
    true,                  // Secure,အတွက်သာရရှိနိုင်သေချာပါစေHTTPSဆက်သွယ်မှုအတွက်လွှဲပြောင်း
    true                   // HttpOnly,တားဆီးJavaScriptဝင်ရောက်ခွင့်
);

ဤနည်းအားဖြင့် session cookies များကိုသတ်မှတ်သည့်အခါကျွန်ုပ်တို့သည်အန္တရာယ်ကင်းသောကွန်ယက်ပတ်ဝန်းကျင်တွင်အန္တရာယ်ကင်းပြီးယိုစိမ့်မှုများကိုရှောင်ရှားရန်သေချာစေပါသည်။

3 ။ session_regenate_id () နှင့် setcookie () ကိုပေါင်းစပ်ပါ

Session ၏လုံခြုံရေးကိုတိုးမြှင့်နိုင်ရန်အတွက် session_regenate_id () ကို ဖုန်းဆက်ပြီးပိုမိုလုံခြုံသော cookie ရွေးချယ်မှုများကိုအသုံးပြုရန် Setcomcookie () function ကိုသုံးပါ။ ဤနည်းအားဖြင့်တိုက်ခိုက်သူသည် session ID ကိုကြားဖြတ်နိုင်လျှင်ပင်အစည်းအဝေးပြန်ပေးဆွဲခြင်းအတွက်အသုံးပြုရန်ခက်ခဲသည်။

ပြီးပြည့်စုံသောဥပမာ -

 // session တစ်ခုစတင်ပါ
session_start();

// 每次请求时都更新ရုံးထိုင်အချိန်ကာလID,确保ရုံးထိုင်အချိန်ကာလ安全
session_regenerate_id(true);

// လုံခြုံအောင်ထားပါရုံးထိုင်အချိန်ကာလCookie
$cookieParams = session_get_cookie_params();
setcookie(
    session_name(),        // လက်ရှိ session的名称
    session_id(),          // ရုံးထိုင်အချိန်ကာလID
    time() + 3600,         // တည်ဆောက်သည်Cookieသက်တမ်းကုန်ဆုံးချိန်
    $cookieParams['path'], // Cookieလမ်းကြောင်း
    $cookieParams['domain'], // Cookieဒိုမိန်းအမည်
    true,                  // Secure,သေချာအောင်လုပ်ပါHTTPSဆက်သွယ်မှုအတွက်လွှဲပြောင်း
    true                   // HttpOnly,တားဆီးJavaScriptဝင်ရောက်ခွင့်
);

// အသုံးပြုသူတောင်းဆိုမှုများကိုဆက်လက်လုပ်ဆောင်ပါ
echo "လက်ရှိ sessionID:" . session_id();

ဤဥပမာတွင် session_regenate_id () ကိုပထမဆုံးခေါ်ဆိုပါက session id ကိုပြောင်းလဲရန် Setcomcookie () ကို အသုံးပြု. setcomcookie () ကို အသုံးပြု. Seturccookie () seturccookie () ကိုအသုံးပြုသည်။ ဤနည်းအားဖြင့် session ၏လုံခြုံရေးကိုအလွန်တိုးတက်ကောင်းမွန်အောင်ပြုလုပ်နိုင်ပြီးအစည်းအဝေးပြန်ပေးဆွဲခြင်းကိုကာကွယ်နိုင်သည်။

4 ။ မှတ်စုများ

  • Session ID ၏မကြာခဏပြောင်းလဲမှု - session_regenate_id () ကို Perfectic Call () သည်လုံခြုံရေးကိုမြှင့်တင်နိုင်သော်လည်းမကြာခဏ ID အစားထိုးသည်။ ယေဘူယျအားဖြင့်အသုံးပြုသူအောင်မြင်စွာဝင်ရောက်ပြီးသို့မဟုတ်တစ်ချိန်ချိန်တိုင်း (ဥပမာ, မိနစ် 30) ကိုအောင်မြင်စွာဝင်ရောက်ပြီးနောက်ပထမဆုံးအကြိမ်အဖြစ်ခေါ်ဆိုနိုင်သည်။

  • HTTPS ဆက်သွယ်မှု - Session Management စစ်ဆင်ရေးအားလုံးကိုလုံခြုံသော HTTPS ဆက်သွယ်မှုမှတစ်ဆင့်လုပ်ဆောင်ရန်သေချာစေပါ။ ဒီလိုမှမဟုတ်ရင် လုံခြုံမှု နှင့် Httponly ကို Setcookie () ကို setcookie () ကို အသုံးပြုနေရင်တောင် data တွေကို netware network environment ထဲမှာကြားဖြတ်နေတုန်းပဲ။

  • Session Fixation Attack : အစည်းအဝေးပြန်ပေးဆွဲခြင်းမှကာကွယ်ရန်သင်ခန်းစာပြင်ဆင်ခြင်းကိုလည်းစဉ်းစားရန်လိုအပ်သည်။ ၎င်းသည် fixed session ID ကိုကြိုတင်သတ်မှတ်ထားသောတိုက်ခိုက်သူကိုရည်ညွှန်းပြီးသုံးစွဲသူအား session တစ်ခုလုပ်ဆောင်ရန် ID ကိုအသုံးပြုရန်အတွက်အသုံးပြုသည်။ session_regenate_id () function ကိုအသုံးပြုခြင်းသည်ထိုကဲ့သို့သောတိုက်ခိုက်မှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။