Web Development တွင်အသုံးပြုသူတောင်းဆိုချက်အရေအတွက်ကိုကန့်သတ်ခြင်းသည်စနစ်လုံခြုံရေးနှင့်အရင်းအမြစ်စီမံခန့်ခွဲမှုတို့ကိုသေချာစေရန်အဓိကလုပ်ဆောင်မှုများအနက်မှတစ်ခုဖြစ်သည်။ အထူးသဖြင့်အချို့သောအခြေအနေများတွင်အန္တရာယ်ရှိသည့်တိုက်ခိုက်မှုများကိုကာကွယ်ရန်လိုအပ်သည့်နေရာများတွင် (brut force cracking againing again again attles စသဖြင့်) သို့မဟုတ် API တောင်းဆိုမှုများကိုထိန်းချုပ်ရန်လိုအပ်သည်, အစည်းအဝေးတောင်းဆိုမှုများကိုကန့်သတ်ထားသည်။ ဤဆောင်းပါးသည် PHP တွင် SessionITIVITION တွင် SessionITIVE ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
SessionInterface ဆိုသည်မှာ Session အတွက်ပြောင်းလွယ်ပြင်လွယ်စီမံခန့်ခွဲမှုနည်းလမ်းများပေးရန်ရည်ရွယ်သည့် PHP 7.1+ ဗားရှင်းဖြင့်မိတ်ဆက်ပေးသော interface တစ်ခုဖြစ်သည်။ developer များက developer များကသူတို့၏ကိုယ်ပိုင် session id မျိုးဆက်နှင့်သိုလှောင်ရေးယန္တရားများကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ ဤ interface ကိုအကောင်အထည်ဖော်ခြင်းအားဖြင့် Developer များက Session ID များကိုမည်သို့ထုတ်လုပ်သည်ကိုစိတ်ကြိုက်ပြုပြင်နိုင်သည်။ ၎င်းသည်လုံခြုံရေးထိန်းချုပ်မှုအတွက်လွတ်လပ်မှုပိုမိုရရှိစေသည်။
Session တောင်းဆိုမှုအရေအတွက်ကိုကန့်သတ်ခြင်းသည်များသောအားဖြင့်အောက်ပါအခြေအနေများကိုကာကွယ်ရန်ဖြစ်သည်။
brute force cracking
Crawler Attack - ဆာဗာအရင်းအမြစ်များကိုမကြာခဏတောင်းဆိုမှုများမှတဆင့်စားသုံးခြင်းမှအလိုအလျောက်ကိရိယာများမှကာကွယ်ပေးသည်။
အကာအကွယ် API : API တောင်းဆိုမှုများကိုမကြာခဏအလွဲသုံးစားမှုသို့မဟုတ် ddos တိုက်ခိုက်မှုများကိုရှောင်ရှားရန်မကြာခဏကန့်သတ်ခြင်းများကိုကန့်သတ်ပါ။
PHP တွင် session ကိုပေါင်းစပ်ခြင်းသည် session တစ်ခုအတွက်တောင်းဆိုမှုအရေအတွက်ကိုအလွယ်တကူထိန်းချုပ်နိုင်သည်။ လိုအပ်ချက်များနှင့်အညီ,
အောင်မြင်ရန် Session IDs များထုတ်ပေးသည်ကိုကျွန်ုပ်တို့ပထမအကြိမ်လုပ်ဆောင်မှုစီမံခန့်ခွဲမှုစိတ်ကြိုက်ပြုလုပ်နိုင်ရန်သေချာစေရန်လိုအပ်ပြီးတစ်ချိန်တည်းမှာပင်အသုံးပြုသူတောင်းဆိုချက်အရေအတွက်သိမ်းဆည်းရန် session ကိုအသုံးပြုပါ။ အောက်တွင်ကျွန်ုပ်တို့သည်တိကျသောအကောင်အထည်ဖော်မှုအဆင့်များကိုမိတ်ဆက်ပေးလိမ့်မည်။
ပထမ ဦး စွာ SessionITInterface ကို အကောင်အထည်ဖော်ရန်စိတ်ကြိုက်အတန်းတစ်ခုကိုဖန်တီးပါ, PHP ၏ပုံမှန် session ID ကိုတိုက်ရိုက်မသုံးပါ, သို့သော်ကျွန်ုပ်တို့၏လိုအပ်ချက်များနှင့်အညီ၎င်းကိုထုတ်ပေးသည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">namespace</span></span><span> </span><span><span class="hljs-title class_">App</span></span><span>\</span><span><span class="hljs-title class_">Session</span></span><span>;
</span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">SessionHandlerInterface</span></span><span>;
</span><span><span class="hljs-keyword">use</span></span><span> </span><span><span class="hljs-title">SessionIdInterface</span></span><span>;
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">CustomSessionId</span></span><span> </span><span><span class="hljs-keyword">implements</span></span><span> </span><span><span class="hljs-title">SessionIdInterface</span></span><span>
{
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">generateId</span></span><span>(</span><span><span class="hljs-params"></span></span><span>)
{
</span><span><span class="hljs-comment">// ထုံးစံကိုထုတ်လုပ်ရန် Session ID</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">uniqid</span></span><span>(</span><span><span class="hljs-string">'session_'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
}
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validateId</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$id</span></span></span><span>)
{
</span><span><span class="hljs-comment">// မှန်ကေြင်းဝန်ခံ Session ID ထိရောက်မှု</span></span><span>
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">'/^session_\w+$/'</span></span><span>, </span><span><span class="hljs-variable">$id</span></span><span>);
}
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
အထက်ပါကုဒ်တွင် ယေဘူယျ နည်းလမ်းကို session id အသစ်တစ်ခုကိုထုတ်လုပ်ရန်အသုံးပြုသည်။ မှန်ကန်သော ID သည်မျှော်လင့်ထားသည့်ပုံစံနှင့်ကိုက်ညီကြောင်း အတည်ပြုရန် အသုံးပြုသည်။ ဤအတန်းမှတစ်ဆင့်ကျွန်ုပ်တို့သည် session တစ်ခုစီကိုထူးခြားစေရန်သေချာစေရန် session ids ၏မျိုးဆက်နှင့်စိစစ်အတည်ပြုကိုထိန်းချုပ်နိုင်သည်။
ထို့နောက် PHP session ကိုဖွင့်ပြီးအသုံးပြုသူ၏တောင်းဆိုမှုကိုရေတွက်ရန် $ _Session Array ကိုသုံးပါ။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// သင်တောင်းဆိုသည့်အခါတိုင်းကောင်တာတိုးမြှင့်</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'request_count'</span></span><span>])) {
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'request_count'</span></span><span>] = </span><span><span class="hljs-number">0</span></span><span>;
}
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'request_count'</span></span><span>]++;
</span><span><span class="hljs-comment">// ကန့်သတ်ထား</span></span><span>
</span><span><span class="hljs-variable">$maxRequests</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'request_count'</span></span><span>] > </span><span><span class="hljs-variable">$maxRequests</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">exit</span></span><span>;
}
</span><span><span class="hljs-comment">// ပုံမှန်စီးပွားရေးယုတ္တိဗေဒကိုဆက်လက်လုပ်ဆောင်ပါ</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-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'request_count'</span></span><span>];
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ဤကုဒ်တွင် တောင်းဆိုမှု unition_count တည်ရှိခြင်းရှိမရှိပထမ ဦး ဆုံးစစ်ဆေးမှုတစ်ခုက 0 ကိုအစပြုသည်။ တောင်းဆိုချက်တစ်ခုစီသည်အမြင့်ဆုံးတန်ဖိုးကိုထက်ကျော်လွန်ပြီးစနစ်သည်အချက်ပြမှုထက်ကျော်လွန်ပြီးကွပ်မျက်ခြင်းကိုအဆုံးသတ်လိမ့်မည်။
ရေရှည်အသုံးပြုမှုကာလအတွင်းသုံးစွဲသူ၏တောင်းဆိုမှုများကိုအကန့်အသတ်မရှိတိုးပွားစေရန်အတွက်, session သက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်ခြင်းအားဖြင့်အချိန်ကုန်လွန်ပြီးနောက် session အရေအတွက်သည်အလိုအလျောက်ပြန်လည်စတင်နိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// တည်ဆောက်သည် Session သက်တမ်းကုန်ဆုံးချိန်သည် 10 မိနစ်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'session.gc_maxlifetime'</span></span><span>, </span><span><span class="hljs-number">600</span></span><span>); </span><span><span class="hljs-comment">// 600 စက်ဏန့်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'last_request_time'</span></span><span>])) {
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'last_request_time'</span></span><span>] = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
}
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">time</span></span><span>() - </span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'last_request_time'</span></span><span>] > </span><span><span class="hljs-number">600</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>(); </span><span><span class="hljs-comment">// session သက်တမ်းကုန်ဆုံး,session ကိုဖျက်ဆီး</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"session သက်တမ်းကုန်ဆုံး,ကျေးဇူးပြုပြီးပြန်ဝင်ပါ"</span></span><span>;
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'last_request_time'</span></span><span>] = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ဤကုဒ်သည် session သက်တမ်းကုန်ဆုံးထိန်းချုပ်မှုကိုအကောင်အထည်ဖော်သည်။ ဤ session သည် 10 မိနစ်ထက်ကျော်လွန်ပြီးတောင်းဆိုမှုမရှိပါကသင်ခန်းစာသည်အလိုအလျောက်ဖျက်ဆီးခံရပြီးအသုံးပြုသူအစည်းအဝေးသက်တမ်းကုန်သွားပြီဖြစ်သည်။
အထက်ပါနည်းလမ်းများမှတဆင့် PHP တွင် Session ID ကို sessionInstancface ဖြင့်စိတ်ကြိုက်ပြုလုပ်နိုင်ပြီးတောင်းဆိုမှုအရေအတွက်ကိုကန့်သတ်ရန် session သိုလှောင်မှုကိုအသုံးပြုနိုင်သည်။ ရိုးရှင်းသောကုဒ်အကောင်အထည်ဖော်မှုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်အသုံးပြုသူအတွေ့အကြုံများကိုသေချာစေရန်အန္တရာယ်ရှိသည့်တောင်းဆိုမှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။
ဤဆောင်းပါးတွင်လက်တွေ့ကျလမ်းညွှန်သည်သင့်အတွက်အထောက်အကူဖြစ်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။