PHP တွင်အသုံးပြုသူတင်သွင်းသည့် HTML Form Data ကိုပြုပြင်သည့်အခါအချက်အလက်များကိုအထူးသဖြင့်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်မှုသို့မဟုတ် HTML အကြောင်းအရာများကိုထုတ်လုပ်သည့်အခါအချက်အလက်များကိုကာကွယ်ရန်နှင့်ထွက်ပြေးတိမ်းရှောင်နေရသည်။ ဘုံမှလွတ်မြောက်သည့်နည်းလမ်းများအနက်မှတစ်ခုမှာ addcslashes function ကိုအသုံးပြုရန်ဖြစ်သည်။ သို့သော်ပုံစံအချက်အလက်များကိုလုပ်ဆောင်သည့်အခါ developer များစွာသည် addslash များကို ယေဘူယျအားဖြင့်အသုံးပြုကြသည်။ အသုံးပြုသူများမှထည့်သွင်းထားသောအချက်အလက်များကိုလုပ်ဆောင်ရန်၎င်းကိုတိုက်ရိုက်အသုံးပြုသည်။ ဒီတော့ ဒီ addcslashes တွေအားလုံးအတွက်အလုပ်လုပ်ပါသလား။ အခြားနောက်ထပ်သင့်လျော်သောနည်းလမ်းရှိပါသလား။
addcslashes သည် PHP တွင် string တစ်ခုတွင်အချို့သောဇာတ်ကောင်များမှလွတ်မြောက်စေသော PHP တွင် string function တစ်ခုဖြစ်သည်။ ၎င်း၏ function သည်သတ်မှတ်ထားသောဇာတ်ကောင်အစုံအပေါ် အခြေခံ. backslash plat character form အဖြစ်သတ်မှတ်ထားသည့်ဇာတ်ကောင်များနှင့်သက်ဆိုင်သည့်စာလုံးများမှလွတ်မြောက်ရန်ဖြစ်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;
</span><span><span class="hljs-variable">$escaped</span></span><span> = </span><span><span class="hljs-title function_ invoke__">addcslashes</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'l'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$escaped</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း: He\l\lo, Wor\l\d!</span></span><span>
</span></span>အပေါ်ကဥပမာမှာ addcslashes တွေအားလုံးကို L ဆီကိုစမယ့် အက္ခရာများ အားလုံးလွတ်မြောက်လာသည်။
addcslashes များကို string တစ်ခုတွင်သတ်သတ်မှတ်မှတ်စာလုံးများမှလွတ်မြောက်ရန်အသုံးပြုနိုင်သော်လည်း HTML form data ကိုအထူးသဖြင့်လုံခြုံရေးစည်းကမ်းချက်များတွင်ကိုင်တွယ်ရန်မသင့်တော်ပါ။ အကြောင်းပြချက်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
HTML Injection ကိုတားဆီးလို့မရပါဘူး ။ addcslashes များသည် ဇာတ်ကောင်များမှလွတ်မြောက်ရန်ရိုးရှင်းစွာထွက်ပြေးတိမ်းရှောင်နေရုံဖြင့် HTML tags များကိုမလုပ်ဆောင်ပါ။ အကယ်. ပုံစံဒေတာတွင်အန္တရာယ်ရှိသော <script> tags များသို့မဟုတ်အခြား HTML element များပါ 0 င်ပါက addslash များသည် ဤအကြောင်းအရာများကိုအကောင်အထည်ဖော်ရန်မတားဆီးနိုင်ပါ။
ဇာတ်ကောင်မှလွတ်မြောက်ခြင်းသည်အလွန်ရိုးရှင်းပါသည် ။ addcslash များကို အဓိကအားဖြင့်ကိုးကားချက်များ, backslash များစသည်တို့စသည့်ထိန်းချုပ်မှုဇာတ်ကောင်များသို့မဟုတ်အထူးအက္ခရာများမှလွတ်မြောက်ရန်အဓိကအားဖြင့်အသုံးပြုသည်။ ဥပမာအားဖြင့်, addcslash များသည် အသုံးပြုသူထည့်သွင်းမှုတွင်ပါ 0 င်နိုင်သည့်အန္တရာယ်ရှိသော JavaScript code သို့မဟုတ် SQL ဆေးထိုးခြင်းကိုထိရောက်စွာကာကွယ်နိုင်သည်။
ဒေတာဘေ့စ်မေးမြန်းချက်များအတွက်အသုံးမ 0 င်ပါ ။ ဥပမာအားဖြင့်, MySQL ဒေတာဘေ့စ်တစ်ခုအတွက် input ကိုကိုယ်တိုင်လွတ်မြောက်ရန်အစား parameterized မေးမြန်းချက်များကိုအသုံးပြုသင့်သည်။
HTML ပုံစံဒေတာများကိုပြုပြင်ရန်အတွက်ဤနေရာတွင်ပိုမိုသင့်လျော်သောနည်းလမ်းများဖြစ်သည်။
XSS တိုက်ခိုက်မှုများကိုကာကွယ်ရန် 0 က်ဘ်စာမျက်နှာသို့အသုံးပြုသူမှအချက်အလက်များကိုတိုက်ရိုက်ထည့်သွင်းထားရန်လိုအပ်ပါက htmlspecialcharchars သို့မဟုတ် htmlenties function ကိုသုံးသင့်သည်။ ၎င်းတို့သည်အန္တရာယ်ရှိသော HTML သို့မဟုတ် JavaScript ကိုကွပ်မျက်ခြင်းမှကာကွယ်ရန်အထူး HTML ဇာတ်ကောင်များကိုလွတ်မြောက်နိုင်သည်။
<span><span><span class="hljs-variable">$user_input</span></span><span> = </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'user_input'</span></span><span>];
</span><span><span class="hljs-variable">$safe_input</span></span><span> = </span><span><span class="hljs-title function_ invoke__">htmlspecialchars</span></span><span>(</span><span><span class="hljs-variable">$user_input</span></span><span>, ENT_QUOTES, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$safe_input</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း安全的 HTML</span></span><span>
</span></span>htmlspecialchars များသည် browser မှ HTML elements များသို့ခွဲခြမ်းစိတ်ဖြာခြင်းကိုရှောင်ရှားရန် HTMLSPECANCALCHARS သို့ < , > နှင့် " နှင့် '' သို့ပြောင်းလဲလိမ့်မည်။
ent_quotes parameter သည်နှစ်ဆနှင့်တစ်ခုတည်းကိုးကားချက်များကိုလွတ်မြောက်ရန်သေချာစေသည်။
SQL Query သည် input data မှလွတ်မြောက်ရန် addcslashes များကို ဘယ်တော့မှမသုံးပါနှင့် ။ ဒေတာဘေ့စ်ကားမောင်းသူမှပေးသော Parameterized Query Method သည် SQLET ပြ problems နာများကိုအလိုအလျောက်ကိုင်တွယ်ရန်နှင့် SQL injection ကိုအလိုအလျောက်ကိုင်တွယ်ရန်အသုံးပြုသင့်သည်။
ဥပမာအားဖြင့်, သင်သည် MySQLI သို့မဟုတ် PDO ကိုအသုံးပြုနေပါကအောက်ပါနည်းလမ်းကိုသုံးနိုင်သည်။
MySQLI ကိုအသုံးပြုခြင်း
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE username = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"s"</span></span><span>, </span><span><span class="hljs-variable">$user_input</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>PDO ကိုအသုံးပြုပြီး
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE username = :username"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bindParam</span></span><span>(</span><span><span class="hljs-string">':username'</span></span><span>, </span><span><span class="hljs-variable">$user_input</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">PARAM_STR</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>ဤနည်းအားဖြင့်ဒေတာဘေ့စ်သည် input data ကိုအလိုအလျောက်လုပ်ဆောင်လိမ့်မည်။
တိကျသော input input validation ကိုအချိန်တိုအတွင်းအသုံးပြုသူထည့်သွင်းမှုကိုကန့်သတ်ရန်ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုရန်လိုအပ်နိုင်သည်။ ဥပမာအားဖြင့်စာလုံးနှင့်နံပါတ်များကိုသာခွင့်ပြုရန် Username များကိုကန့်သတ်ပါ။
<span><span><span class="hljs-variable">$user_input</span></span><span> = </span><span><span class="hljs-variable">$_POST</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-string">"/^[a-zA-Z0-9]+$/"</span></span><span>, </span><span><span class="hljs-variable">$user_input</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Valid username!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Invalid username!"</span></span><span>;
}
</span></span>ဤချဉ်းကပ်မှုသည်အသုံးပြုသူထည့်သွင်းမှုသည်မျှော်လင့်ထားသည့်ပုံစံနှင့်ကိုက်ညီကြောင်းသေချာသည်။ သို့သော် HTML သို့မဟုတ် SQL လုံခြုံရေးကာကွယ်မှုကိုလုံးဝအစားထိုးမထားပါ။
addcslashes သည် HTML form အချက်အလက်များကိုပြုပြင်ရန်မသင့်တော်ပါ။ အသုံးပြုသူများမှထည့်သွင်းထားသောအချက်အလက်များအတွက်၎င်းကိုကိုင်တွယ်ရန်မှန်ကန်သောနည်းလမ်းမှာအသုံးပြုရန်ဖြစ်သည်။
XSS တိုက်ခိုက်မှုများကိုကာကွယ်ရန် HTMLSPECALCHARCHARS သို့မဟုတ် HTMLETITIONS ;
SQL ထိုးဆေးကိုကာကွယ်ရန်အတွက် Parameterized စုံစမ်းမှု ,
အသုံးပြုသူထည့်သွင်းမှုပုံစံကိုစစ်ဆေးရန်သင့်လျော်သော ပုံမှန်အသုံးအနှုန်းများကို သုံးပါ။
ဤနည်းလမ်းများသည်လျှောက်လွှာလုံခြုံရေးကိုထိရောက်စွာတိုးတက်စေပြီးဘုံအားနည်းချက်များကိုရှောင်ရှားလိမ့်မည်။ ထို့ကြောင့် developer များသည်အမျိုးမျိုးသောလုပ်ဆောင်ချက်များ၏သက်ဆိုင်သောအခြေအနေများကိုနားလည်သင့်ပြီးအသုံးပြုသူထည့်သွင်းမှုအချက်အလက်များကိုလုပ်ဆောင်ရန်အသင့်တော်ဆုံးနည်းလမ်းကိုရွေးချယ်သင့်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
HTML addcslashes