လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အသုံးပြုသူ upload ဖိုင်များကိုလုပ်ဆောင်သောအခါအဘယ်လက်တွေ့ကျသောကျွမ်းကျင်မှုနှင့် application spilents များရှိသနည်း။

အသုံးပြုသူ upload ဖိုင်များကိုလုပ်ဆောင်သောအခါအဘယ်လက်တွေ့ကျသောကျွမ်းကျင်မှုနှင့် application spilents များရှိသနည်း။

gitbox 2025-06-24

1 ။ Pression_INPPAP function ကိုမိတ်ဆက်

PHPP တွင် input data ကိုရယူရန်နှင့် filter_input function ကိုအသုံးပြုသည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(type, variable_name, filter = FILTER_DEFAULT, options = </span><span><span class="hljs-literal">null</span></span><span>)
</span></span>
  • အမျိုးအစား - input_get , input_post , input_cookie စသည့် input အချက်အလက်အမျိုးအစားကိုသတ်မှတ်ပါ။

  • variable_name : variable ကို၏အမည်ကိုရိုက်ထည့်ပါ။

  • filter : filter type ကို Presfefined filter ကိုစဉ်ဆက်မပြတ် (ဥပမာ, filter_valka_int ) ဖြစ်နိုင်သည့် filter type အမျိုးအစားကိုအသုံးပြုထားသည်။

  • ရွေးချယ်စရာများ - filter များအပိုရွေးစရာများ (optional) ။

အသုံးပြုသူ upload ဖိုင်များထုတ်ယူခြင်းအတွက် File Upload နှင့်သက်ဆိုင်သောနယ်ပယ်များကို $ _files hyperglobal array မှတဆင့် 0 င်ရောက်ရန်လိုအပ်သည်။ filter_input သည် ဖိုင်ကိုတိုက်ရိုက်မလုပ်ဆောင်သော်လည်းဖိုင်အရွယ်အစားနှင့်အမျိုးအစားကဲ့သို့သောဖိုင်၏အခြားဂုဏ်သတ္တိများကို filter လုပ်ရန်အသုံးပြုနိုင်သည်။

2 ။ တင်ထားသောဖိုင်များနှင့်သက်ဆိုင်သောအချက်အလက်များနှင့်သက်ဆိုင်သောသတင်းအချက်အလက်များကို filter လုပ်ရန် filter_input ကို သုံးပါ

အသုံးပြုသူများသည်ဖိုင်များကို upload ပြုလုပ်သောအခါဖိုင်၏အမျိုးအစား, အရွယ်အစား, အမည်နှင့်အခြားအချက်အလက်များကိုကျွန်ုပ်တို့ဂရုစိုက်သည်။ ဤအချက်အလက်များကို filter_input မှတစ်ဆင့်ထိရောက်စွာစစ်ဆေးပြီးအတည်ပြုနိုင်သည်။

2.1 filter အမျိုးအစားများအမျိုးအစားများ

ဖိုင်တစ်ခု၏ Mime အမျိုးအစားသည်ဖိုင်တစ်ခုမျှော်လင့်ချက်များနှင့်ကိုက်ညီမှုရှိမရှိဆုံးဖြတ်ရန်ဘုံနည်းလမ်းတစ်ခုဖြစ်သည်။ သုံးစွဲသူမှတင်ထားသောဖိုင်သည်တိကျသောအမျိုးအစားနှင့်ကိုက်ညီခြင်းရှိမရှိစစ်ဆေးရန် filter_input ကို သုံးနိုင်သည်။ ဒီမှာဥပမာတစ်ခုပါ။

 <span><span><span class="hljs-variable">$file_type</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_type'</span></span><span>, FILTER_SANITIZE_STRING);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_type</span></span><span> !== </span><span><span class="hljs-string">'image/jpeg'</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$file_type</span></span><span> !== </span><span><span class="hljs-string">'image/png'</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"မထောက်ခံဖိုင်အမျိုးအစားများ!"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>

ဒီဥပမာမှာဖိုင်အမျိုးအစားကိုစစ်ထုတ်ပြီး JPEG နဲ့ PNG fem formats မှာပုံတွေကိုတင်ခွင့်ပြုထားတယ်။ Filter_sanitize_String သည်တရားမဝင်ဇာတ်ကောင်များကိုဖယ်ရှားရန်အသုံးပြုသည်။ MIME အမျိုးအစားစစ်ထုတ်ခြင်းကိုဆာဗာမှပြုလုပ်လေ့ရှိသော်လည်းဤ filtering ကိုအပိုဆောင်းအာမခံချက်အဖြစ်အသုံးပြုနိုင်သည်။

2.2 filter ဖိုင်အရွယ်အစား

အသုံးပြုသူများမှတင်ထားသောဖိုင်အရွယ်အစားအတွက်ဖိုင်သည်ဆာဗာမှသတ်မှတ်ထားသောအများဆုံး upload ကန့်သတ်ချက်ထက်မကျော်လွန်နိုင်ကြောင်းသေချာစေရန်လိုအပ်သည်။ များသောအားဖြင့်ကျွန်ုပ်တို့သည် uploaded file ၏အရွယ်အစားကို $ _files ['file'] ['file'] ['size'] ကို ရရှိသည်

 <span><span><span class="hljs-variable">$file_size</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_size'</span></span><span>, FILTER_VALIDATE_INT);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_size</span></span><span> &gt; </span><span><span class="hljs-number">1000000</span></span><span>) { </span><span><span class="hljs-comment">// အများဆုံးဖိုင်အရွယ်အစားကန့်သတ်1MB</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်ကြီးကြီး,တင်လို့မရဘူး!"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>

ဤကုဒ်တွင် filter_valka_int ဖိုင်အရွယ်အစားသည်ကိန်းဂဏန်းတစ်ခုဖြစ်ကြောင်းအတည်ပြုရန်အသုံးပြုသည်။ အကယ်. ဖိုင်အရွယ်အစားသည်အမြင့်ဆုံးတန်ဖိုးကိုကျော်လွန်ပါက (ဥပမာ 1MB ကဲ့သို့) အစုအဝေးထက်ကျော်လွန်ပါကချက်ချင်းသတင်းစကားသည် output ကိုဖြစ်သည်။

3 ။ ဖိုင်တင်ခြင်း၏လုံခြုံရေးကိုမြှင့်တင်ရန် filter_input ကို သုံးပါ

ဖိုင်တင်ခြင်းသည် Web Development တွင်အထိခိုက်မခံသောစစ်ဆင်ရေးဖြစ်သည်။ ၎င်းကိုအတည်မပြုရသေးပါက၎င်းသည်လုံခြုံရေးအားနည်းချက်များကို (အန္တရာယ်ရှိသောဖိုင်များတင်ခြင်း, ရှိပြီးသားဖိုင်များစသည်တို့ကိုတင်ခြင်း, Filter_INPAT function သည်အောက်ပါရှုထောင့်များတွင်တင်ခြင်းလုပ်ငန်းစဉ်၏လုံခြုံရေးကိုမြှင့်တင်ပေးနိုင်သည်။

3.1 တရားမ 0 င်ဖိုင်များတင်ခြင်းကိုတားဆီးပါ

သုံးစွဲသူများမှတင်သွင်းသောဖိုင်အမျိုးအစားနှင့်ဖိုင်အရွယ်အစားကို filter လုပ်ရန် filter_input ကို အသုံးပြုခြင်းကိုအသုံးပြုခြင်းသည် အသုံးပြု. ဖိုင်အမျိုးအစားအချို့ကိုရှောင်ရှားနိုင်သည်။ ဥပမာအားဖြင့်သုံးစွဲသူများကိုကြီးမားသောဖိုင်များ (သို့) ဖိုင်အမျိုးအစားများ (ဥပမာ script files များကဲ့သို့) မဖြည့်ဆည်းပေးနိုင်သည့်ဖိုင်များသို့မဟုတ်ဖိုင်အမျိုးအစားများကိုတင်ခြင်းမှတားဆီးပါ။

 <span><span><span class="hljs-variable">$file_type</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_type'</span></span><span>, FILTER_SANITIZE_STRING);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$file_type</span></span><span>, [</span><span><span class="hljs-string">'image/jpeg'</span></span><span>, </span><span><span class="hljs-string">'image/png'</span></span><span>])) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"တရားမဝင်ဖိုင်အမျိုးအစား!"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>

3.2 File Name Injection Attack တိုက်ခိုက်မှုများကိုကာကွယ်ခြင်း

Filter_input သည် ဖိုင်အမည်ရှိအန္တရာယ်ရှိသောဇာတ်ကောင်များကိုရှောင်ရှားရန်ဖိုင်၏အမည်အမည်ကို filter လုပ်နိုင်သည်။

 <span><span><span class="hljs-variable">$file_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_name'</span></span><span>, FILTER_SANITIZE_STRING);
</span><span><span class="hljs-variable">$file_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/[^a-zA-Z0-9_\-\.]/'</span></span><span>, </span><span><span class="hljs-string">'_'</span></span><span>, </span><span><span class="hljs-variable">$file_name</span></span><span>);
</span></span>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်တရားမ 0 င်စာလုံးများကိုဖိုင်အမည်ရှိတရားမ 0 င်စာလုံးများကိုအစားထိုးရန်ပုံမှန်အသုံးအနှုန်းများကို အသုံးပြု. တင်ထားသောဖိုင်အမည်မှာမျှော်လင့်ထားသည့်ဖိုင်အမျိုးအစားနှင့်ကိုက်ညီသောလုံခြုံရေးပြ issues နာများကိုကာကွယ်နိုင်သည်။

3.3 ရှိပြီးသားဖိုင်များကို overwrite ကိုကာကွယ်ခြင်း

ဖိုင်များကိုတင်သည့်အခါမှန်ကန်သောစစ်ဆေးမှုကိုမလုပ်ဆောင်ပါကအသုံးပြုသူသည်ဆာဗာပေါ်ရှိလက်ရှိဖိုင်အဖြစ်ဖိုင်အမည်ရှိဖိုင်ကို တင်. တင်နိုင်သည်။ ဤအရာကိုရှောင်ရှားရန်ဖိုင်ကိုတင်သည့်အခါ filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့် filter_input function မှတဆင့်။

 <span><span><span class="hljs-variable">$file_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_name'</span></span><span>, FILTER_SANITIZE_STRING);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-string">"/uploads/<span class="hljs-subst">$file_name</span></span></span><span>")) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်ပြီးသားရှိပြီးသား,ကျေးဇူးပြု. ဖိုင်အမည်ကိုပြောင်းပါ!"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>

ဤကုဒ်သည်ဖိုင်များကိုတင်ရန်လမ်းကြောင်းနှင့်အတူတူပင်ဖိုင်အမည်ရှိသည့်လမ်းကြောင်းရှိ, မရှိကိုစစ်ဆေးခြင်းအားဖြင့်ဤကုဒ်သည် file overwriting ကိုရှောင်ရှားသည်။

4 ။ ပြည့်စုံသောဥပမာများ

အောက်တွင်အသုံးပြုသော Filter_ENTAR ၏ဥပမာတစ်ခုမှာသုံးစွဲသူများမှတင်ထားသောဖိုင်များကိုမည်သို့စစ်ဆေးရမည်ကိုပြသရန် Filter_ENTAP function ကိုပေါင်းစပ်ထားပါသည်။

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] == </span><span><span class="hljs-string">'POST'</span></span><span>) {
    </span><span><span class="hljs-variable">$file_type</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_type'</span></span><span>, FILTER_SANITIZE_STRING);
    </span><span><span class="hljs-variable">$file_size</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_size'</span></span><span>, FILTER_VALIDATE_INT);

    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_size</span></span><span> &gt; </span><span><span class="hljs-number">1000000</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်အရွယ်အစားကန့်သတ်ထက်ကျော်လွန်!"</span></span><span>;
        </span><span><span class="hljs-keyword">exit</span></span><span>;
    }

    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$file_type</span></span><span>, [</span><span><span class="hljs-string">'image/jpeg'</span></span><span>, </span><span><span class="hljs-string">'image/png'</span></span><span>])) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"မထောက်ခံဖိုင်အမျိုးအစားများ!"</span></span><span>;
        </span><span><span class="hljs-keyword">exit</span></span><span>;
    }

    </span><span><span class="hljs-variable">$file_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input</span></span><span>(INPUT_POST, </span><span><span class="hljs-string">'file_name'</span></span><span>, FILTER_SANITIZE_STRING);
    </span><span><span class="hljs-variable">$file_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_replace</span></span><span>(</span><span><span class="hljs-string">'/[^a-zA-Z0-9_\-\.]/'</span></span><span>, </span><span><span class="hljs-string">'_'</span></span><span>, </span><span><span class="hljs-variable">$file_name</span></span><span>);

    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-string">"/uploads/<span class="hljs-subst">$file_name</span></span></span><span>")) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်ပြီးသားရှိပြီးသား,ကျေးဇူးပြု. ဖိုင်အမည်ကိုပြောင်းပါ!"</span></span><span>;
        </span><span><span class="hljs-keyword">exit</span></span><span>;
    }

    </span><span><span class="hljs-title function_ invoke__">move_uploaded_file</span></span><span>(</span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'file'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>], </span><span><span class="hljs-string">"/uploads/<span class="hljs-subst">$file_name</span></span></span><span>");
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာဖိုင်တင်ပါ!"</span></span><span>;
}
</span></span>

5 ။ အကျဉ်းချုပ်

တောင်းဆိုမှုများမှအချက်အလက်များကိုရယူရန်နှင့် filter လုပ်ရန် filter_input function ကို PHP တွင်အသုံးပြုသည်။ ၎င်းကို အသုံးပြု. အချက်အလက်များကိုရယူခြင်းနှင့်အခြားပုံမှန်တောင်းဆိုမှုများမှအချက်အလက်များကိုလုပ်ဆောင်ရန်အဓိကအားဖြင့်အသုံးပြုသော်လည်းအသုံးပြုသူများသည်ဖိုင်များကိုတင်သည့်အခါသက်ဆိုင်ရာသတင်းအချက်အလက်များကိုလုပ်ဆောင်ရန်လည်းအသုံးပြုနိုင်သည်။ သင့်လျော်သော filtering နှင့်စိစစ်ခြင်းအားဖြင့်ဖိုင်တင်ခြင်းစစ်ဆင်ရေး၏လုံခြုံရေးသည်အန္တရာယ်ရှိသောဖိုင်တင်ခြင်း၏လုံခြုံရေးသည်အန္တရာယ်ရှိသောဖိုင်တင်ခြင်း, ဖိုင်များ overwlect လုပ်ခြင်း, လက်တွေ့ကျသော applications များတွင် filter_input သည်အရန်ကိရိယာတစ်ခုအနေဖြင့် developer များပိုမိုလုံခြုံ။ ယုံကြည်စိတ်ချရသောဖိုင်တင်ခြင်းဖိုင်များကိုရေးဆွဲရန်ကူညီနိုင်သည်။