PHP developer များအရ PHP Code ဆေးထိုးခြင်းအားနည်းခြင်း (ကုဒ်ဆေးထိုး) သည်သာမန်နှင့်အန္တရာယ်ရှိသောတိုက်ခိုက်မှုနည်းလမ်းဖြစ်သည်။ အသုံးပြုသူများမှထည့်သွင်းထားသောဒေတာများသို့အန္တရာယ်ရှိသောကုဒ်ကိုထိုးသွင်းခြင်းဖြင့်တိုက်ခိုက်သူများသည်ဆာဗာကိုထိန်းချုပ်နိုင်ပြီးဝက်ဘ်ဆိုက်၏လုံခြုံရေးကိုအားနည်းစေနိုင်သည်။ ဤအားနည်းချက်ကိုထိရောက်စွာခုခံကာကွယ်နိုင်ရန်အတွက် developer များသည်အကာအကွယ်ပေးမှုအစီအမံများကိုပြုလုပ်ရမည်။ ဤဆောင်းပါးသည်သင်၏ 0 က်ဘ်ဆိုက်၏လုံခြုံရေးကိုတိုးတက်စေရန်အတွက်ဘုံ PHP code injection inctionable underrentability ကာကွယ်ရေးနည်းလမ်းများတို့ကိုမိတ်ဆက်ပေးလိမ့်မည်။
Input filtering သည် PHP Code တွင်ထိုးသွင်းမှုအားနည်းချက်များကိုပထမဆုံးကာကွယ်ခြင်းဖြစ်သည်။ အသုံးပြုသူများမှထည့်သွင်းထားသောအချက်အလက်များကိုစစ်ထုတ်ခြင်းအားဖြင့်၎င်းသည်အန္တရာယ်ရှိသောကုဒ်ကိုထိုးသွင်းခြင်းကိုထိရောက်စွာတားဆီးနိုင်သည်။ ဤတွင်ရိုးရှင်းသော inpar filtering function ကိုဥပမာတစ်ခု၏ဥပမာတစ်ခုဖြစ်သည်။
function_input ($ input) { $ input = trim ($ input); // အစအ ဦး နှင့်အဆုံး whitespace ဇာတ်ကောင် $ input = stripslashes ($ input); // backslash $ input = htmlspecialchars ($ input) ကိုဖယ်ရှားပါ။ // အထူးအက္ခရာများကို HTML entities သို့ပြောင်းရန် HTML အဖွဲ့အစည်းများသို့ပြောင်းပါ။ }
ဒီဥပမာမှာ Backslashes ကိုဖယ်ရှားဖို့ `stripslashes () function ကို` stripslashes () function ကိုဖယ်ရှားဖို့ `trim ()` function ကိုသုံးတယ်။ ဤစစ်ဆင်ရေးလုပ်ငန်းများသည်အသုံးအများဆုံးကုဒ်ဆေးထိုးတိုက်ခိုက်မှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။
အခြားဘုံ PHP Code ဆေးထိုးခြင်းခံရခြင်းအားနည်းချက်သည်အန္တရာယ်ရှိသော SQL query ထုတ်ပြန်ချက်များကိုတည်ဆောက်ခြင်းဖြင့်တိုက်ခိုက်သည်။ ထိုကဲ့သို့သောအားနည်းချက်များကိုကာကွယ်ရန် developer များဒေတာဘေ့စ်မေးမြန်းချက်များအတွက်ကြိုတင်လျှောက်ထားထားသည့်ထုတ်ပြန်ချက်များကိုအသုံးပြုသင့်သည်။ ဒေတာဘေ့စ်စုံစမ်းမှုအတွက် PDO ကိုအသုံးပြုခြင်း၏ဥပမာတစ်ခုမှာ -
$ Conn = PDO အသစ် ("MySQL: Host: Host = localhost; DBNAME = MYDB", $ username, $ username, $ password); $ stmt = $ conn-> ပြင်ဆင်မှု ("Username =: Username =: Username"), $ stmt-> binparam ('- သုံးစွဲသူအမည်', $ username); $ stmt-> execute ();
ဤဥပမာတွင်အသုံးပြုသူထည့်သွင်းထားသောတန်ဖိုးများကို SQL query stations ထဲသို့ထည့်ရန် Parameterized မေးမြန်းချက်များကိုအသုံးပြုသည်။ ဤချဉ်းကပ်မှုသည် input တန်ဖိုးများကိုကွပ်မျက်ခံရသော command များထက်အချက်အလက်များကိုအချက်အလက်များအဖြစ်သတ်မှတ်ခြင်းကိုသေချာစေပြီးလုံခြုံရေးကိုသိသိသာသာတိုးတက်စေသည်။
အသုံးပြုသူ input ကိုစစ်ထုတ်ခြင်းအပြင် Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအပြင် developer များသည်လည်းအသုံးပြုသူထည့်သွင်းမှုကိုအတည်ပြုရန်နှင့်ကန့်သတ်သင့်သည်။ အတည်ပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသုံးပြုသူမှထည့်သွင်းထားသောအချက်အလက်များသည်မျှော်လင့်ချက်များနှင့်ကိုက်ညီမှုရှိစေရန်သေချာစေနိုင်သည်။ ကန့်သတ်ချက်များအားဖြင့်ကျွန်ုပ်တို့သည် input အချက်အလက်များကိုကြာမြင့်စွာမသတ်မှတ်ခြင်းနှင့်မကိုက်ညီသောအနေဖြင့်မကိုက်ညီပါ။ ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
အကယ်. (ISSET) ($ _ username '] )&& is _ _ _ post [' post ['post'])) $ username = filter_input ($ _ post ['username'])); $ စကားဝှက် = filter_input ($ _ post ['post']); // အသုံးပြုသူအမည်နှင့်စကားဝှက်အရှည်ကိုစစ်ဆေးပါ (strlen ($ username) <6 || strlen ($ username)> 20) ECHO 'မမှန်ကန်သော Username alize'; ထွက်ပေါက်; } အကယ်. (strlen ($ စကားဝှက်) <8 || strlen ($ password)> 20) ECHO 'မမှန်ကန်သောစကားဝှက်အရှည်'; ထွက်ပေါက်; } // login logic ကို execute // .../ ... }
အထက်ပါဥပမာတွင် `strlen ()` function မှတဆင့်အသုံးပြုသူအမည်နှင့်စကားဝှက်၏အရှည်ကိုကျွန်ုပ်တို့အတည်ပြုပြီး၎င်းကိုစာလုံးရေ 6 နှင့် 20 အထိကန့်သတ်ထားသည်။ ၎င်းသည်အန္တရာယ်ရှိသောဒေတာများကိုထိထိရောက်ရောက်ရှားပါးသည်သို့မဟုတ်ကြာလွန်းသေးသည်ကိုထိရောက်စွာတားဆီးနိုင်သည်။
PHP Code Intermention underability များသည်ဘုံနှင့်လေးနက်သောလုံခြုံရေးခြိမ်းခြောက်မှုများဖြစ်သည်။ သို့သော်ပံ့ပိုးမှုစစ်ထုတ်ခြင်း, ဤနည်းလမ်းများသည်လုံခြုံရေးကိုတိုးတက်ကောင်းမွန်စေနိုင်သော်လည်းဝက်ဘ်ဆိုက်များနှင့်အသုံးပြုသူအချက်အလက်များကိုပိုမိုကောင်းမွန်စွာကာကွယ်ရန်အတွက် Developer များကလုံခြုံရေးကာကွယ်စောင့်ရှောက်ရေးဗဟုသုတဗဟုသုတဗဟုသုတနှင့်မဟာဗျူဟာများကိုစဉ်ဆက်မပြတ်လေ့လာရန်နှင့်နောက်ဆုံးပေါ်လုံခြုံရေးနည်းပညာများနှင့်မဟာဗျူဟာများကိုစဉ်ဆက်မပြတ်လေ့လာရန်လိုအပ်သည်။