လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP နှင့် CGI 0 ဘ်ဆို်ဘ0ဆိုင်ရာလုံခြုံရေးကာကွယ်မှု - ဟက်ကာများကိုကာကွယ်ရန်ထိရောက်သောမဟာဗျူဟာ

PHP နှင့် CGI 0 ဘ်ဆို်ဘ0ဆိုင်ရာလုံခြုံရေးကာကွယ်မှု - ဟက်ကာများကိုကာကွယ်ရန်ထိရောက်သောမဟာဗျူဟာ

M66 2025-06-20

PHP နှင့် CGI 0 ဘ်ဆို်ဘ0ဆိုင်ရာလုံခြုံရေးကာကွယ်မှု - ဟက်ကာများကိုကာကွယ်ရန်ထိရောက်သောမဟာဗျူဟာ

အင်တာနက်စဉ်ဆက်မပြတ်ဖွံ့ဖြိုးတိုးတက်မှုဖြင့်ဝက်ဘ်ဆိုက်လုံခြုံရေးပြ issues နာများသည်အထူးအရေးကြီးသည်။ အသုံးများသော Web Programming ဘာသာစကားများ, PHP နှင့် CGI တို့သည် 0 က်ဘ်ဆိုက်၏လုံခြုံရေးကာကွယ်စောင့်ရှောက်ရေးအကျိုးသက်ရောက်မှုကိုတိုက်ရိုက်အသုံးပြုသည်။ ဟက်ကာတိုက်ခိုက်မှုများကိုတွန်းလှန်နိုင်ရန် Developer များသည်ဖွံ့ဖြိုးရေးလုပ်ငန်းစဉ်အတွင်းလုံခြုံရေးကာကွယ်စောင့်ရှောက်ရေးအစီအမံများကိုပိုမိုခိုင်မာစေရန်လိုအပ်သည်။ ဤဆောင်းပါးသည် Developeres များကို 4 င်းတို့၏ဝက်ဘ်ဆိုက်များလုံခြုံရေးကိုထိထိရောက်ရောက်တိုးတက်စေရန်အတွက် PHP နှင့် CGI ၏လုံခြုံရေးကာကွယ်စောင့်ရှောက်ရေးနည်းလမ်းများနှင့် CGI ၏အသေးစိတ်အချက်အလက်များကိုအသေးစိတ်ဖော်ပြထားသည်။

1 ။ အသုံးပြုသူ input ကိုအတည်ပြု

အသုံးပြုသူအား 0 က်ဘ်ဆိုက်တွင်ဟက်ကာများကအလွယ်တကူအမြတ်ထုတ်နိုင်စွမ်းရှိသည်။ အသုံးပြုသူ input ကိုအတိအကျစစ်ဆေးခြင်းနှင့်စစ်ထုတ်ခြင်းအားဖြင့်တိုက်ခိုက်ခံရခြင်း၏အန္တရာယ်ကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ ဤတွင်အချို့သောအသုံးများသောအသုံးပြုသူ input အတည်ပြုသည့်နည်းလမ်းများမှာ -

1.1 string input filtering

String input အတွက်ဆေးထိုးတိုက်ခိုက်မှုများကိုကာကွယ်ရန်သုံးစွဲသူထည့်သွင်းမှုကို filtering function များကို အသုံးပြု. အသုံးပြုနိုင်သည်။

$ input = $ _GET ['input'];
$ filteredinin = filter_var ($ input, filter_sanitize_string);

1.2 ဒစ်ဂျစ်တယ် input ကိုအတည်ပြုခြင်း

ကိန်းဂဏန်းသွင်းအားစုများအတွက်, input value သည်မှန်ကန်သောနံပါတ်ဖြစ်ကြောင်းအတည်ပြုရန် `ne_numeric ()` function ကိုသုံးပါ။

$ input = $ _GET ['input'];
လျှင် (! is_numeric ($ input)) {
    သေဆုံး ("မမှန်ကန်သော input");
}

1.3 တိကျသော format ကို input ကိုအတည်ပြုခြင်း

အီးမေးလ်လိပ်စာများသို့မဟုတ် URL များကဲ့သို့သောတိကျသောပုံစံများအတွက်သွင်းအားစုများအတွက်ပုံမှန်အသုံးအနှုန်းများကိုအတည်ပြုရန်အတွက်ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုနိုင်သည်။

$ _E = $ _GET ['email'];
IF (! Preg_match ("/ ^ * \ w -] + (\ W -] +) * @ ([\ w - z] + [a-za-z] + [a-za-z] + {2,7 z] {2,7 z] {za-z] +
    သေဆုံး ("မမှန်ကန်သောအီးမေးလ်");
}

2 ။ စကားဝှက်လုံခြုံရေး

စကားဝှက်များသည်အသုံးပြုသူ၏အကောင့်များ၏လုံခြုံရေးကိုကာကွယ်ရန်အတွက်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်ပြီး,

2.1 စကားဝှက် hash function ကိုအသုံးပြုခြင်း

အသုံးပြုသူစကားဝှက်များကိုသိမ်းဆည်းသည့်အခါစကားဝှက်ကိုပေါက်ကြားခြင်းမှကာကွယ်ရန် password ကို encrypt လုပ်ပြီးသိုလှောင်ထားသင့်သည်။

$ စကားဝှက် = $ _post ['password'];
$ hashedpassword = password_hash ($ password_default);
// သိုလှောင်မှု $ hashedpassword မှဒေတာဘေ့စ်မှ

2.2 စကားဝှက်အစွမ်းလိုအပ်ချက်လိုအပ်ချက်များချမှတ်ပါ

စကားဝှက်အရှည်နှင့်ရှုပ်ထွေးမှုကဲ့သို့သောစကားဝှက်အားသာချက်လိုအပ်ချက်များကိုသတ်မှတ်ပါ။

$ စကားဝှက် = $ _post ['password'];
if (strlen ($ စကားဝှက်) <8) {
    သေဆုံး ("စကားဝှက်အရှည်သည်အနည်းဆုံးဂဏန်း 8 လုံး"),);
}

3 ။ ဖိုင်တင်ခြင်းလုံခြုံရေး

ဖိုင်တင်ခြင်းလုပ်ဆောင်ချက်သည် 0 က်ဘ်ဆိုက်တွင်ရှိသောဘုံအင်္ဂါရပ်များထဲမှတစ်ခုဖြစ်သည်။ သို့သော်၎င်းသည်အလားအလာရှိသောလုံခြုံရေးအန္တရာယ်လည်းဖြစ်သည်။ ဖိုင်တင်ခြင်းလုံခြုံရေးကိုတိုးတက်စေရန်ဘုံဆိုင်ရာအစီအမံအချို့ကိုဤတွင်ဖော်ပြထားသည်။

3.1 ဖိုင်အမျိုးအစားစစ်ဆေးခြင်း

ဖိုင်များကိုတင်သည့်အခါအန္တရာယ်ရှိသည့်ဖိုင်များကိုတင်ခြင်းမှရှောင်ရှားရန်ဖိုင် extension သို့မဟုတ် MIME အမျိုးအစားကိုစစ်ဆေးသင့်သည်။

$ file = $ _files [&#39;file&#39;];
$ ခွင့်ပြုချက်များ = [JPG &#39;,&#39; GIF &#39;,&#39; GIF &#39;;
$ leavitymetypes = [&#39;image / Jpeg&#39;, &#39;Image / PNG&#39;, &#39;Image / GIF&#39;);

အကယ်. (! in_array (Pathinfo (Pathinfo), Pathinfo_extension), 
    ! in_array ($ file [&#39;type], $ typeemimetypes),) {
    သေဆုံး ("ဤဖိုင်အမျိုးအစားကိုတင်ခြင်းကိုခွင့်မပြုပါ"),);
}

3.2 ဖိုင်သိုလှောင်မှုလမ်းကြောင်းလုံခြုံရေး

ဖိုင်တင်ခြင်းဖိုင်တင်ချောင်းပြီးနောက်သိုလှောင်မှုလမ်းကြောင်းသည်လုံခြုံစိတ်ချရသောလမ်းကြောင်းယိုစိမ့်မှုကြောင့်လုံခြုံရေးပြ problems နာများကိုရှောင်ရှားရန်သေချာစေပါ။

$ supepath = &#39;/ လမ်းကြောင်း / too / save&#39;;
$ filename = uniqid () ။ &#39;.jpg&#39;; // ထူးခြားသောဖိုင်အမည်ရွှေ့ပြောင်းထားသော just_uploaded_file ($ _ file] [&#39;file file&#39;] [&#39;TMP_NAME&#39;], $ savepath &#39;/&#39; &#39;(&#39; TMP_TATE &#39;],

4 ။ SQL Injection Protection

SQL Injection သည်ဘုံတိုက်ခိုက်မှုနည်းလမ်းများအနက်မှတစ်ခုဖြစ်သည်။ SQL Injection ကိုကာကွယ်ရန်ဘုံနည်းလမ်းများ -

4.1 Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်း

parameters တွေကိုချည်နှောင်ရန် preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းသည် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။

$ username = $ _post [&#39;username&#39;];
$ စကားဝှက် = $ _post [&#39;password&#39;];
$ stmt = $ pdo-> ကြိုတင်ပြင်ဆင်မှု ("Username =: Username =: စကားဝှက် =: လျှို့ဝှက်နံပါတ်"),
$ stmt-> Execute ([&#39;: အသုံးပြုသူအမည် => $ username&#39; => Username, &#39;: စကားဝှက်&#39; => $ password]);

4.2 parameterized query ကိုအသုံးပြုခြင်း

Parameterized Query မှတစ်ဆင့်အသုံးပြုသူထည့်သွင်းမှုသည်အန္တရာယ်ရှိသောထိုးဆေးကိုကာကွယ်ရန်စုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များကိုစုံစမ်းမှုသတ်မှတ်ချက်များအဖြစ်ဒေတာဘေ့စ်သို့ကူးယူထားသည်။

$ username = $ _post [&#39;username&#39;];
$ စကားဝှက် = $ _post [&#39;password&#39;];
$ stmt = $ pdo-> ကြိုတင်ပြင်ဆင်မှု ("username = username = password =?"););
$ stmt-> Execute ([$ username, $ password]);

နိဂုံးချုပ်အားဖြင့်

အသုံးပြုသူ inputification ကိုအားဖြည့်ခြင်းဖြင့်စကားဝှက်ကိုစစ်ဆေးခြင်းအားဖြင့်စကားဝှက်ကိုမြှင့်တင်ခြင်း, 0 ဘ်ဆိုဒ်ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်း 0 ဘ်ဆိုဒ်နှင့်အသုံးပြုသူများ၏သတင်းအချက်အလက်လုံခြုံရေးကိုကာကွယ်ရန်ဤလုံခြုံရေးအစီအမံများကိုဂရုပြုရမည်။