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

MB_CETDode_NumericalENTY ကိုပိုမိုကောင်းမွန်အောင်လုပ်နည်းအက်ခရာ encoding processing အတွက် htmlenties နှင့်အတူမည်သို့အသုံးပြုရမည်နည်း။

gitbox 2025-08-19
<span><span><span class="hljs-meta">&lt;?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">"မင်္ဂလာပါ,ကမ်ာဘ!&lt;script&gt;alert('XSS');&lt;/script&gt;"</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 အဝင်(ကဲ့သို့ &lt; &gt; &amp; သင်္ကေတများ)</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 ရလဒ်ဆင်တူသည်:
 * &amp;#20320;&amp;#22909;&amp;#65292;&amp;#19990;&amp;#30028;&amp;#65281;&amp;lt;script&amp;gt;alert(&amp;#039;XSS&amp;#039;);&amp;lt;/script&amp;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">?&gt;</span></span><span>
</span></span>