လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> မှားယွင်းသောအသုံးပြုသူများကစော်ကားခံရခြင်းမှ error_log ကိုမည်သို့ကာကွယ်နိုင်သနည်း

မှားယွင်းသောအသုံးပြုသူများကစော်ကားခံရခြင်းမှ error_log ကိုမည်သို့ကာကွယ်နိုင်သနည်း

gitbox 2025-05-26

PHP Development တွင် error_log function သည်အမှားများ, စနစ်မှတ်တမ်းများကိုမှတ်တမ်းတင်ရန်သို့မဟုတ်သတ်မှတ်ထားသောအီးမေးလ်လိပ်စာများသို့ပို့ရန်အတွက်အမှားအယွင်းများကိုသစ်ထုတ်လုပ်ရန်အတွက်အလွန်လက်တွေ့ကျသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် developer များပြ problems နာများကိုဖြေရှင်းရန်နှင့်ပရိုဂရမ်တည်ငြိမ်မှုကိုတိုးတက်စေသည်။ သို့သော်မှတ်တမ်းတွင်ပရိုဂရမ်၏အ ဖွ င့်အသေးစိတ်အချက်အလက်များနှင့်အမှားအချက်အလက်များပါ 0 င်သောကြောင့်,

ဤဆောင်းပါးသည် PHP စီမံကိန်းများအတွက်မှားယွင်းစွာအသုံးချခြင်း မှလွဲ. မှတ်တမ်းများ ကိုမည်သို့ထိရောက်စွာတားဆီးနိုင်ပုံကိုဤဆောင်းပါးသည်လေ့လာမှုကိုလေ့လာလိမ့်မည်။


Error_log function ကိုမိတ်ဆက်ပေးခြင်း

PHP's Error_log function ကိုအမှားအချက်အလက်များကိုထုတ်ဖော်ရန်အသုံးပြုသည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
error_log("အမှားတစ်ခုဖြစ်ပွားခဲ့သည်");
?>

၎င်းသည် log ရေးသားခြင်းနည်းလမ်းသုံးခုကိုထောက်ပံ့သည်။

  • အမှားမှတ်တမ်းကိုဆာဗာသို့ပို့သည် (ပုံမှန်)

  • သတ်မှတ်ထားသောဖိုင်သို့ပို့ပါ

  • သတ်မှတ်ထားသောအီးမေးလ်လိပ်စာသို့ပို့ပါ

ထို့အပြင် developer များသည် variable variable တန်ဖိုးများ, debug အချက်အလက်စသဖြင့်မှတ်တမ်းအကြောင်းအရာများကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်။


Error_log ကိုဟက်ကာများကဘယ်လိုနှိပ်စက်သလဲ။

1 ။ စံချိန်တင် input ကို input ကိုဒေတာ

အကယ်. ပရိုဂရမ်သည်အသုံးပြုသူမှအချက်အလက်များကိုမှတ်တမ်းတင်သည်ဆိုပါက inputs contents ကို filter လုပ်ထားခြင်းသို့မဟုတ်ကန့်သတ်မထားပါက၎င်းကိုအန္တရာယ်ရှိတဲ့အကြောင်းအရာများကိုတည်ဆောက်ခြင်းအားဖြင့်၎င်းကို manuicous code သို့မဟုတ် scripts များပါ 0 င်သည်။

ဥပမာ -

 <?php
$input = $_GET['name'];
error_log("အသုံးပြုသူထည့်သွင်းမှုကို: " . $input);
?>

အကယ်. $ input တွင်အထူးအက္ခရာများသို့မဟုတ်အန္တရာယ်ရှိသော script များပါ 0 င်ပါကတိုက်ခိုက်သူသည်မှတ်တမ်းဖတ်ရှုခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုမှတ်တမ်းတင်ခြင်းအားဖြင့် Log Injection မှတဆင့်အကျိုးသက်ရောက်နိုင်သည်။

2 ။ မှတ်တမ်းတင်ခြင်းနှင့်မှတ်တမ်းဖိုင်ကိုမှတ်တမ်းတင်ခြင်း

အချို့ဖြစ်ရပ်များတွင်တိုက်ခိုက်သူသည် Log Intries ထဲသို့ 0 င်ရောက်ခြင်းကိုမှတ်တမ်းတင်ခြင်း (သို့) သစ်သွင်းလိုင်းများကိုမှတ်တမ်းတင်ခြင်းနှင့်သစ်ဂုတ်သွင်းလိုင်းများကိုထည့်သွင်းခြင်းဖြင့်ဝင်ရောက်စွက်ဖက်သည်။

3 ။ log အထိခိုက်မခံတဲ့သတင်းအချက်အလက်တွေပေါက်ကြား

အကယ်. အထိခိုက်မခံသောသတင်းအချက်အလက်များကို log in, token, system path and database information စသည့်မှတ်တမ်းတွင်မှတ်တမ်းတင်ထားသည်ဆိုပါကမှတ်တမ်းကိုဝင်ရောက်ပြီးသည်နှင့်တိုက်ခိုက်သူသည်အရေးကြီးသောသတင်းအချက်အလက်များကိုရယူပြီးလုံခြုံရေးဆိုင်ရာအန္တရာယ်များကိုရရှိစေလိမ့်မည်။

4 ။ မှတ်တမ်းများမှတစ်ဆင့်ဖိုင်ထည့်သွင်းမှုအားနည်းချက်များကိုမြှင့်တင်ပါ

အစွန်းရောက်သောကိစ္စများတွင် PHP ဖိုင်တွင် log file ကိုအရင်းအမြစ်တစ်ခုအနေဖြင့်အသုံးပြုပါကအန္တရာယ်ရှိသည့်မှတ်တမ်းပါအကြောင်းအရာများသည် Code Execute အားနည်းချက်များကိုဖြစ်ပေါ်စေနိုင်သည်။


အမှားအယွင်းများကိုမှားယွင်းစွာခေါင်းပုံဖြတ်ခံရခြင်းမှမည်သို့ကာကွယ်နိုင်သနည်း။

1 ။ တင်းကြပ်စွာ filter နှင့်ထွက်ပေါက် log အကြောင်းအရာ

၎င်းသည်အသုံးပြုသူထည့်သွင်းမှုမှတ်တမ်းသို့မဟုတ်အခြားတက်ကြွသောအကြောင်းအရာများကိုရေးသားခြင်း, အခြားတက်ကြွသောအကြောင်းအရာများနှင့်အခြားတက်ကြွသောအကြောင်းအရာများကိုရေးသားခြင်း, စီစစ်ခြင်းနှင့်လွတ်မြောက်ခြင်းကိုပထမဆုံးပြုလုပ်သင့်သည်။ သငျသညျ htmlspecialchars သို့မဟုတ် custom filtering functions ကိုသုံးနိုင်သည်။

ဥပမာ -

 <?php
$input = $_GET['name'];
$safeInput = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
error_log("အသုံးပြုသူထည့်သွင်းမှုကို: " . $safeInput);
?>

2 ။ အထိခိုက်မခံတဲ့သတင်းအချက်အလက်များကိုမှတ်တမ်းတင်ခြင်းကိုရှောင်ပါ

Passwords, Private keys များနှင့် log in sessuration tokens ကဲ့သို့သောအထိခိုက်မခံသောအချက်အလက်များကိုရေးခြင်းမပြုရန်ကြိုးစားပါ။ သင်အမှန်တကယ်လိုအပ်ပါကသိုလှောင်ခြင်းသို့မဟုတ်စာဝှက်ခြင်းသို့မဟုတ်စာဝှက်ခြင်းများကိုသင်စဉ်းစားနိုင်သည်။

3 ။ သင့်တော်သောမှတ်တမ်းခွင့်ပြုချက်ကိုသတ်မှတ်ပါ

ခွင့်ပြုချက်မရှိဘဲဝင်ရောက်ခြင်းသို့မဟုတ်ပြုပြင်မွမ်းမံခြင်းမှကာကွယ်ရန်သင့်တော်သောဖိုင်ခွင့်ပြုချက်ဖြင့် log file permissions များဖြင့်သတ်မှတ်သင့်သည်။ မှတ်တမ်းဖိုင်များ၏ဖတ်ရန်နှင့်ရေးရန်ခွင့်ပြုချက်များကို server ပေါ်တွင်တင်းကြပ်စွာထိန်းချုပ်ထားသင့်သည်။

4 ။ ပုံမှန်ပုံမှန်သန့်ရှင်းခြင်းနှင့်မော်ကွန်းတိုက်မှတ်တမ်းများ

အလွန်အကျွံ log files များကိုရှောင်ကြဉ်ပါ။

5 ။ လုံခြုံသောမှတ်တမ်းစာကြည့်တိုက်သို့မဟုတ်မူဘောင်ကိုသုံးပါ

monolog ကဲ့သို့သောရင့်ကျက်သောမှတ်တမ်းများကို Monology ကဲ့သို့ Log Formatting, log rotation နှင့် log rotation နှင့် log rotation နှင့် log rot + level level level level level level) ကဲ့သို့သော Monolg Monolgs ကဲ့သို့သောရင့်ကျက်သောမှတ်တမ်းများကိုအကြံပြုပါသည်။


လက်တွေ့ကျတဲ့ဥပမာ - လုံခြုံသောမှတ်တမ်းအသုံးပြုသူထည့်သွင်းမှုမှတ်တမ်း

 <?php
function safe_error_log($message) {
    // မှတ်တမ်းအချက်အလက်ကိုစစ်ထုတ်ပါ,ထိန်းချုပ်မှုဇာတ်ကောင်ဖယ်ရှားပါ
    $cleanMessage = preg_replace('/[\x00-\x1F\x7F]/u', '', $message);
    error_log($cleanMessage);
}

$userInput = $_GET['comment'] ?? '';
$safeInput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
safe_error_log("အသုံးပြုသူမှတ်ချက်များ: " . $safeInput);
?>

အကျဉ်းချုပ်

  • Error_log ဆိုသည်မှာ Debugging နှင့်အမှားရှာဖွေခြင်းအတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။

  • မှတ်တမ်းသို့စာဖြင့်ရေးသားထားသောအချက်အလက်အားလုံးကိုစစ်ထုတ်ခြင်းနှင့်လွတ်မြောက်ခြင်းသည် Log ဆေးထိုးခြင်းကိုကာကွယ်ရန်သော့ချက်ဖြစ်သည်။

  • အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုမှတ်တမ်းများတွင်သိုလှောင်ခြင်းနှင့် log file ခွင့်ပြုချက်ကိုကောင်းစွာစီမံပါ။

  • ရင့်ကျက်သောမှတ်တမ်းကြည့်ရှုခြင်းကို အသုံးပြု. မှတ်တမ်းလုံခြုံရေးနှင့်စီမံခန့်ခွဲမှုထိရောက်မှုကိုတိုးတက်စေရန်ကူညီနိုင်သည်။

Error_log ၏ဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်ဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာစွမ်းဆောင်ရည်ကိုတိုးတက်စေရုံသာမကစနစ်လုံခြုံရေးနှင့်ဟက်ကာများကို အသုံးပြု. ဟက်ကာများကိုတားဆီးနိုင်သည်။