လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> LibxMl_use_internal_Endors နှင့် libxMl_disable_entity_entity_entity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity accouble functions နဲ့ပေါင်းစပ်ခြင်းကနေလွတ်လပ်စွာဆက်သွယ်မှုကိုတားဆီးဖို့ဘယ်လိုကာကွယ်နိုင်မလဲ။

LibxMl_use_internal_Endors နှင့် libxMl_disable_entity_entity_entity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity accouble functions နဲ့ပေါင်းစပ်ခြင်းကနေလွတ်လပ်စွာဆက်သွယ်မှုကိုတားဆီးဖို့ဘယ်လိုကာကွယ်နိုင်မလဲ။

gitbox 2025-06-16

Modern Web Development တွင် XML ကိုဒေတာဖလှယ်ခြင်း, configuration files များနှင့်အခြားအခြေအနေများတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။ သို့သော် XML ခွဲခြမ်းစိတ်ဖူးနေစဉ်အတွင်းကာကွယ်ခြင်းမပြုပါက၎င်းသည်ပြင်ပအဖွဲ့အစည်း၏တိုက်ခိုက်မှုများအတွက်အားနည်းချက်တစ်ခုဖြစ်လာနိုင်သည်။ XXE Attack ဆိုသည်မှာ XML ဖိုင်များမှတစ်ဆင့်အန္တရာယ်ရှိသောအကြောင်းအရာများကိုပိုမိုဆိုးဝါးသောအကြောင်းအရာများကိုထိုးနှက်ခြင်း, သတင်းအချက်အလက်ယိုစိမ့်မှု,

ဤပြ problem နာကိုဖြေရှင်းရန် PHP သည်ပြင်ပအဖွဲ့အစည်း၏တိုက်ခိုက်မှုများကိုကာကွယ်ရန် built-in functions အချို့ကိုထောက်ပံ့ပေးသည်။ သူတို့ထဲမှ LibxMl_use_internal_Eruor () နှင့် libxml_disable_entity_entity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Ementity_Emptity_Ementity () သည်အလွန်ထိရောက်သောအကာအကွယ်နည်းလမ်းနှစ်ခုဖြစ်သည်။ ပြင်ပအဖွဲ့အစည်းဆိုင်ရာတိုက်ခိုက်မှုများကိုကာကွယ်ရန်ဤဆောင်းပါးနှစ်ခုကိုမည်သို့ပေါင်းစပ်ရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါမည်။

1 ။ ပြင်ပ Entity Attack (XXE) ဆိုတာဘာလဲ။

ပြင်ပ Entity Attack (XXE) သည် XML ဖိုင်တွင်ပြင်ပအဖွဲ့အစည်းဆိုင်ရာကြေငြာချက်တစ်ခုဖြင့်ပြုလုပ်သောတိုက်ခိုက်မှုတစ်ခုဖြစ်သည်။ XML ဖိုင်များသည် system file များ, URLs များသို့မဟုတ်အခြားပြင်ပအရင်းအမြစ်များဖြစ်သောပြင်ပအရင်းအမြစ်များကိုရည်ညွှန်းနိုင်သည်။ တိုက်ခိုက်သူသည်ဖိုင်အမျိုးအစားကိုအထိခိုက်မခံသောသတင်းအချက်အလက်များကိုညွှန်ပြနိုင်သည်သို့မဟုတ်ဆာဗာသည်အန္တရာယ်ရှိသော XML ဖိုင်ကိုမလုံခြုံသောလုပ်ငန်းများကိုလုပ်ဆောင်နိုင်သည်။

ဥပမာအားဖြင့်တိုက်ခိုက်သူသည် XML ဖိုင်ကိုအောက်ပါပုံစံဖြင့်တည်ဆောက်နိုင်သည်။

 <!DOCTYPE foo [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>
  <data>&xxe;</data>
</root>

ဤအချိန်တွင် XML Parser သည် System ၏ / etc / passwd ဖိုင်ကိုဖတ်ရန်နှင့်၎င်း၏အကြောင်းအရာများကို ဒေတာ ဒြပ်စင်သို့ထည့်သွင်းရန်ကြိုးစားသည်။ ထိုသို့သောတိုက်ခိုက်မှုများသည်အထိခိုက်မခံသောအချက်အလက်ချိုးဖောက်မှုများဖြစ်ပေါ်စေနိုင်သည်။

2 ။ libxml_use_internal_Erues () ကို သုံး. XML အမှားအယွင်းများကိုဘယ်လိုကိုင်တွယ်ရမလဲ။

XML ဒေတာများကိုပြုပြင်သည့်အခါ PHP သည်ပုံမှန်အားဖြင့်အမှားတစ်ခုဖြစ်သည့်အမှားတစ်ခုဖြစ်သည့်အခါ PHP သည်သတိပေးချက်သို့မဟုတ်အမှားတစ်ခုဖြစ်စေပြီးအမှားအယွင်းများကိုဖော်ထုတ်နိုင်သည်။ LibxMl_use_internal_Eruor () ကို သုံးပါ () ဤအမှားရလဒ်များကိုပိတ်ထားရန်နှင့်အတွင်းပိုင်းအမှားကိုင်တွယ်သည့်ယန္တရားများကိုအသုံးပြုပါ။ ဤနည်းအားဖြင့် XML ဒေတာသည်မမှန်ကန်ပါကသို့မဟုတ်အားနည်းချက်ရှိလျှင်ပင်အစီအစဉ်သည်အသေးစိတ်အမှားအချက်အလက်များကိုဖော်ထုတ်လိမ့်မည်မဟုတ်ပါ။

နမူနာကုဒ်:

 libxml_use_internal_errors(true);

$xmlString = '<root><data>&xxe;</data></root>';
$xml = simplexml_load_string($xmlString);

if ($xml === false) {
    echo "ဝန်တင် XML အမှားတစ်ခုဖြစ်ပွားခဲ့သည်。\n";
    foreach(libxml_get_errors() as $error) {
        echo $error->message . "\n";
    }
}

ဤဥပမာတွင် LibxMl_use_internal_Eruor (Trust) သည် XML ဖိုင်နှင့်ပြ a နာရှိလျှင်အစီအစဉ်သည်သတိပေးချက်မထားကြောင်းသေချာစေသည်။ အမှားမက်ဆေ့ခ်ျကိုပြည်တွင်း၌သိမ်းဆည်းထားပြီး LibxMl_get_Eruor မှတဆင့်ရရှိသောရနိုင်သည်။

3 ။ LibxMl_disable_entity_entity_Ementity_Ementity_Omentity_loader ကို သုံး. ပြင်ပ entity ကိုဘယ်လိုပိတ်ရမလဲ။

libxml_disable_entity_Ementity_loader () သည် developer များက XML Parser ၏ပြင်ပအဖွဲ့အစည်း၏ 0 င်ခွင့်လုပ်ငန်းကိုပိတ်ထားရန်ခွင့်ပြုသည့်နောက်ထပ်အဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ အကယ်. ပြင်ပအဖွဲ့အစည်း၏ 0 န်ဆောင်မှုကိုပိတ်ထားပါက XML parser သည်ဝေးလံခေါင်သီသောအရင်းအမြစ်များသို့မဟုတ် system files များကို load လုပ်နိုင်မည်မဟုတ်ပါ။

နမူနာကုဒ်:

 libxml_disable_entity_loader(true);

$xmlString = '<?xml version="1.0"?>
<!DOCTYPE foo [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>
  <data>&xxe;</data>
</root>';

$xml = simplexml_load_string($xmlString);

if ($xml === false) {
    echo "XML ဝန်တင်失败,ပြင်ပအဖွဲ့အစည်းများအားပိတ်ထားသည်。\n";
}

ဤဥပမာတွင် LibxMl_Disable_entity_Ementity_Ementity_Ementity (trut) သည် ပြင်ပအဖွဲ့အစည်းများတင်ဆောင်လာပြီးတိုက်ခိုက်သူတစ် ဦး အား XML ဖိုင်မှတစ်ဆင့်ပြင်ပ entity activity ကြေငြာချက်တစ်ခုပါ 0 င်သည့်တိုင်ခွဲခြမ်းစိတ်ဖြာခြင်းသည်၎င်းတို့ကိုအကောင်အထည်ဖော်ရန်မဖြစ်နိုင်ပါ။

4 ။ XXE တိုက်ခိုက်မှုများကိုကာကွယ်ရန် libxml_use_internal_Emisable_entity_entity_Ementity () ကိုသုံးပါ

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

ဘက်စုံနမူနာကုဒ်:

 libxml_use_internal_errors(true);
libxml_disable_entity_loader(true);

$xmlString = '<?xml version="1.0"?>
<!DOCTYPE foo [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<root>
  <data>&xxe;</data>
</root>';

$xml = simplexml_load_string($xmlString);

if ($xml === false) {
    echo "XML ဝန်တင်失败。\n";
    foreach(libxml_get_errors() as $error) {
        echo $error->message . "\n";
    }
}

ဒီဥပမာမှာ LibxMl_use_internal_Errors (True) ကို ခွဲခြမ်းစိတ်ဖြာ နေစဉ်အတွင်းအမှားအယွင်းများကိုဖုံးကွယ်ထားရန်အသုံးပြုသည်။ XML ဖိုင်တွင်ပြင်ပအဖွဲ့အစည်းများပါ 0 င်ပါက၎င်းသည်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုယိုစိမ့်မှုသို့မဟုတ်အန္တရာယ်ရှိသောလုပ်ဆောင်မှုများဖြစ်ပေါ်စေမည်မဟုတ်ပါ။

5 ။ အကျဉ်းချုပ်

ပြင်ပ Entity Attack (XXE) သည်မသင့်လျော်သောကိုင်တွယ်မှုများတွင်ကြီးမားသောလုံခြုံရေးပြ issues နာများကိုဖြစ်ပေါ်စေနိုင်သောအန္တရာယ်ရှိသောအားနည်းချက်အမျိုးအစားတစ်ခုဖြစ်သည်။ ထိုကဲ့သို့သောတိုက်ခိုက်မှုများကိုထိရောက်စွာကာကွယ်ရန် PHP သည် libxml_use_use_internal_Eruor () နှင့် libxml_disable_entity_entity_entity_Ementity_Ementity () နှင့် LibxMl_disable_entity_entity_Ementity ()) developer များ parsing နှင့် external entity our entity ourmenting ကိုထိန်းချုပ်ရန်ကူညီနိုင်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ခြင်းအားဖြင့် PHP application များ၏လုံခြုံရေးကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်နှင့်ပြင်ပအဖွဲ့အစည်းများ၏တိုက်ခိုက်မှုကိုရှောင်ရှားနိုင်သည်။