<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဤစာရွက်စာတမ်းသည်၎င်းကိုပိုမိုကောင်းမွန်အောင်မည်သို့အသုံးပြုရမည်ကိုပြသသည် mb_encode_numericentity ကိုက်ညီ htmlentities ဇာတ်ကောင် encoding processing လုပ်ဆောင်ပါ</span></span><span>
</span><span><span class="hljs-comment">// အတွက် PHP သဘာဝပတ်ဝန်းကျင်ရှိ Multibyte ဇာတ်ကောင်များထုတ်လုပ်သည့်အခါ code သို့မဟုတ်သတင်းအချက်အလက်ဆုံးရှုံးမှုကိုရှောင်ကြဉ်ပါ</span></span><span>
</span><span><span class="hljs-comment">// ----------------------------</span></span><span>
<span class="hljs-comment">/**
* ပိုကောင်းအောင်ဘယ်လိုသုံးရမလဲ mb_encode_numericentity ကိုက်ညီ htmlentities ဇာတ်ကောင် encoding processing လုပ်ဆောင်ပါ?
*
* အပြောင်းအလဲနဲ့အတွက်မဟုတ် ASCII ဘာသာစကားမျိုးစုံသည်စာလုံးမျိုးစုံပါဝင်သည်(တရုတ်လိုပဲ、ဂျပန်、ကိုရီးယားစသည်ဖြင့်)နာရီ,PHP ၏ `htmlentities` 函数常အတွက်将特殊လူသူမ转换为 HTML အဝင်,ရှောင်ရှားရန် XSS လုံခြုံရေးပြ issues နာများ。
* မည်မှျပင်,`htmlentities` 对多字节လူသူမ၏支持有限,အထူးသဖြင့်ဇာတ်ကောင်အစုံသတ်မှတ်ထားသည့်အခါ UTF-8 နာရီ,အချို့သောဇာတ်ကောင်များကိုတိုက်ရိုက်လျစ်လျူရှုခြင်းသို့မဟုတ်မပြည့်စုံသောလွတ်မြောက်ခြင်းကိုပြုလုပ်နိုင်သည်。
*
* ဒီပြ problem နာကိုဖြေရှင်းရန်,`mb_encode_numericentity` ပူးပေါင်းဆောင်ရွက်နိုင်ပါတယ် `htmlentities` အသုံးပြု,မ ASCII လူသူမ先转换为数字အဝင်,တစ် ဦး စည်းလုံးညီညွတ်ရေးထုံးစံ၌လုပ်ဆောင်ပါ HTML ထွက်ပေြးခြင်း。
* ဤလုပ်ငန်းစဉ်ကိုလက်တွေ့ကျသောဥပမာများမှတဆင့်ရှင်းပြကြပါစို့。
*
* တစ်、အခြေခံအသုံးပြုမှုဥပမာများ
*/</span>
</span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-string">"မင်္ဂလာပါ,ကမ်ာဘ!<script>alert('XSS');</script>"</span></span><span>;
</span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-string">'UTF-8'</span></span><span>;
</span><span><span class="hljs-comment">// 定义အဝင်转换အကျယ်ည(0x80 ရောက်လာ 0xFFFF အားလုံး Non မှဖော်ပြသည် ASCII လူသူမ)</span></span><span>
</span><span><span class="hljs-variable">$convmap</span></span><span> = [</span><span><span class="hljs-number">0x80</span></span><span>, </span><span><span class="hljs-number">0xffff</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0xffff</span></span><span>];
</span><span><span class="hljs-comment">// 第တစ်步:မ ASCII လူသူမ转换为数字အဝင်</span></span><span>
</span><span><span class="hljs-variable">$numericEntity</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_encode_numericentity</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>, </span><span><span class="hljs-variable">$convmap</span></span><span>, </span><span><span class="hljs-variable">$encoding</span></span><span>);
</span><span><span class="hljs-comment">// အဆင့် 2:将剩余内容ထွက်ပေြးခြင်း为 HTML အဝင်(ကဲ့သို့ < > & သင်္ကေတများ)</span></span><span>
</span><span><span class="hljs-variable">$escapedOutput</span></span><span> = </span><span><span class="hljs-title function_ invoke__">htmlentities</span></span><span>(</span><span><span class="hljs-variable">$numericEntity</span></span><span>, ENT_QUOTES | ENT_HTML5, </span><span><span class="hljs-variable">$encoding</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escapedOutput</span></span><span>;
<span class="hljs-comment">/**
* output ရလဒ်ဆင်တူသည်:
* &#20320;&#22909;&#65292;&#19990;&#30028;&#65281;&lt;script&gt;alert(&#039;XSS&#039;);&lt;/script&gt;
*
* မြင်နိုင်သော,“မင်္ဂလာပါ,ကမ်ာဘ!” 中၏中文လူသူမ已被转换为十进制 HTML အဝင်,而脚本标签နှင့်引号等特殊လူသူမ也被成功ထွက်ပေြးခြင်း。
*
* နှစ်、ဘာကြောင့်ဒီလိုလုပ်ရတာလဲ?
*
* - **တိုးမြှင့်လိုက်ဖက်တဲ့တိုးမြှင့်**:htmlentities 在遇ရောက်လာ非 ISO-8859-1 编码လူသူမနာရီ行为不တစ်,အတူလုပ်ကိုင် mb_encode_numericentity 可确保所有လူသူမ都被显式处理;
* - **လုံခြုံရေးကိုတိုးတက်အောင်လုပ်ပါ**:XSS တိုက်ခိုက်မှုများမကြာခဏထိုးသွင်းနေကြသည် HTML tag ကိုသို့မဟုတ် JavaScript အောင်မြင်ရန်,提前ထွက်ပေြးခြင်း所有可疑လူသူမ可大大降低风险;
* - **concled code ကိုရှောင်ကြဉ်ပါ**:在输出ရောက်လာ网页、သငေ်္ဘာအသွားစာတမ်း、或数据库နာရီ,多字节လူသူမကဲ့သို့果未正确ထွက်ပေြးခြင်း可能被误解释,ထို့ကြောင့်, carbled code သို့မဟုတ်ဒေတာမူမမှန်ဖြစ်ပေါ်。
*
* သုံး、မှတ်သားရန်အရာ
*
* 1. `mb_encode_numericentity` ဖြစ် `htmlentities` **ဉီးစွာ** တယ်လီဖုန်းဆက်ခြင်း,မဟုတ်ရင်မဟုတ်ဘူး ASCII လူသူမ可能会被提前截断或忽略。
* 2. `convmap` ၏设置要覆盖目标လူသူမ၏ Unicode အကျယ်ည,常用配置ကဲ့သို့ `[0x80, 0xffff, 0, 0xffff]` အများဆုံးဖုံးလွှမ်းရန်လုံလောက်သော UTF-8 လူသူမ。
* 3. လုပ်ငန်းများ၌ပါ HTML အကြောင်းအရာကိုထည့်ပါ(例ကဲ့သို့用户提交၏富文本),建议အတူလုပ်ကိုင် `html_entity_decode` နှင့် `mb_decode_numericentity` ကြားဖြတ် Transcoding ကိုသဘောပေါက်နားလည်သဘောပေါက်。
*
* လေး、ကောက်ချက်
*
* 结合အသုံးပြု `mb_encode_numericentity` နှင့် `htmlentities` ဒါဟာပိုလုံခြုံနိုင်ပါတယ်、可靠地处理多语言环境下၏လူသူမ编码问题。
* မည်သည့်အသုံးပြုသူ input ကို processing、dynamic စာသား、သို့မဟုတ် browser မှ output ကို,强烈建议进行此类ထွက်ပေြးခြင်း处理,以确保应用၏稳定性နှင့်安全性。
*/</span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>