လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MD5_File () function ကိုအသုံးပြုသည့်အခါခွင့်ပြုချက်ပြ issues နာများကိုအဘယ်ကြောင့်ပျက်ကွက်သနည်း။ ဘုံအခြေအနေများနှင့်ဖြေရှင်းချက်များ၏ခွဲခြမ်းစိတ်ဖြာ

MD5_File () function ကိုအသုံးပြုသည့်အခါခွင့်ပြုချက်ပြ issues နာများကိုအဘယ်ကြောင့်ပျက်ကွက်သနည်း။ ဘုံအခြေအနေများနှင့်ဖြေရှင်းချက်များ၏ခွဲခြမ်းစိတ်ဖြာ

M66 2025-06-23

PHP တွင် MD5_File () သည်သတ်မှတ်ထားသောဖိုင်အမျိုးအစား၏ MD5 hash တန်ဖိုးကိုတွက်ချက်ရန်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 md5_file(string $filename, bool $binary = false): string|false

ဤလုပ်ဆောင်ချက်သည်ဖိုင်စစ်ဆေးခြင်း, သိုလှောင်ရေးယန္တရား, သမာဓိစစ်ဆေးမှုများနှင့်အခြားအခြေအနေများဖိုင်များကိုကိုင်တွယ်ရာတွင်အလွန်အသုံးများသည်။ သို့သော်အမှန်တကယ်အသုံးပြုသောအခါ developer များသည်ရှုပ်ထွေးသောပြ problem နာတစ်ခုနှင့်ကြုံတွေ့ရနိုင်သည် - ဖိုင်တည်ရှိပြီးလမ်းကြောင်းသည်မှန်ကန်သော်လည်း MD5_File () သည် မှားသည် ။ ၎င်းသည်များသောအားဖြင့် ဖိုင်ခွင့်ပြုချက်ပြ issues နာများ ကြောင့်ဖြစ်သည်။ ဤဆောင်းပါးသည်၎င်း၏အကြောင်းရင်းများ, ဘုံအခြေအနေများနှင့်ဖြေရှင်းနည်းများကိုအသေးစိတ်ခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။


1 ။ MD5_File () ခွင့်ပြုချက်ပြ issues နာများကြောင့်အဘယ်ကြောင့်ပျက်ကွက်သနည်း။

MD5_File () MD5 စစ်ဆင်ရေးပြုလုပ်ရန်အတွက်ဖိုင်တစ်ခုလုံးကိုဖတ်ရန်အပြည့်အစုံကိုဖတ်ရန်ကြိုးပမ်းသည်။ ထို့ကြောင့် PHP script ရှိခွင့်ပြုချက်များသည် ပစ်မှတ်ဖိုင်ကိုဖတ်ရန် မလုံလောက်ပါက function သည် မှားယွင်းသော အရာဖြစ်သည်။

သော့ချက်အချက်မှာ "ဖတ်နိုင်သည့်ခွင့်ပြုချက်" ဖြစ်သည်။

MD5_File () အတွက်ဖိုင်တွင် "ဖတ်ရှုနိုင်သောခွင့်ပြုချက်" ရှိရမည်။ ၎င်းတွင်အောက်ပါရှုထောင့်များပါ 0 င်သည်။

  • ဖိုင်ကိုကိုယ်တိုင်ကိုယ်ကျ Execution အသုံးပြုသူ (ထိုကဲ့သို့သော www-data ) ကိုဖတ်ရှုနိုင်ပါသည်။

  • အဆင့်မြင့်လမ်းညွှန်များအားလုံးသည် "Execution ခွင့်ပြုချက်များ" ရှိရမည် (ဆိုလိုသည်မှာ၎င်းတို့ကို "0 င်ရောက်နိုင်သည်) ထို့ကြောင့် PHP သည်လမ်းကြောင်းကို 0 င်ရောက်နိုင်သည်။

  • Selinux ကဲ့သို့သော SELINUX, SELINUX, ab ရာစရီသည်လက်လှမ်းမီမှုအခွင့်အရေးများကိုအကျိုးသက်ရောက်နိုင်သည်။


2 ။ ဘုံအမှားအခြေအနေများကိုခွဲခြမ်းစိတ်ဖြာခြင်း

1 ။ မလျော်ကန်သောဖိုင်ခွင့်ပြုချက်ဆက်တင်များ

ဖိုင်ခွင့်ပြုချက်သည် 600 (ပိုင်ရှင်ဖတ်နိုင်လောက်အောင်နှင့်အဆင်သင့်) သည် PHP Execute အသုံးပြုသူသည်ဖိုင်ပိုင်ရှင်မဟုတ်လျှင်ဖိုင်ကိုဖတ်လိမ့်မည်မဟုတ်ပါ။

 -rw-------  1 root root  1024 May 28 10:00 secret.txt

PHP သည် WWW-data အသုံးပြုသူအဖြစ်ဖွင့်လျှင်၎င်းသည်အထက်ပါဖိုင်ကိုဖတ်နိုင်ပြီး MD5_File () သည် ပျက်ကွက်လိမ့်မည်မဟုတ်ချေ။

2 ။ ဒါကိုပိုင်တဲ့ directory ရဲ့ခွင့်ပြုချက်မလုံလောက်ဘူး

ဖိုင်ကိုယ်တိုင်ကခွင့်ပြုချက်ကိုဖတ်ရှုလျှင်ပင် directory ခွင့်ပြုချက်သည် PHP ကို ​​0 င်ခွင့်မပြုပါကဖိုင်ကို 0 င် ရောက်. မရပါ။

 drwx------  2 user user 4096 May 28 10:00 /var/private/

ဤကိစ္စတွင်ဖိုင်ကို 644 အထိသတ်မှတ်ထားသည့်တိုင် PHP သည် /var/private/secret.txt ကို 0 င် ရောက်. မရပါ။

3 ။ Selinux သို့မဟုတ်လုံခြုံရေး module ကန့်သတ်ချက်များ

အချို့သော Linux System အချို့သည် Selinux သို့မဟုတ် ApparMor တို့တွင်ပါ 0 င်သည်။

Selinux ၏ကန့်သတ်ချက်များကိုစစ်ဆေးရန်အောက်ပါ command ကိုသုံးနိုင်သည်။

 ls -Z /path/to/file

3 ။ ဖြေရှင်းနည်း

1 ။ ဖိုင်ခွင့်ပြုချက်ကိုစစ်ဆေးပြီးပြုပြင်ပါ

Target File သည် PHP အသုံးပြုသူအားခွင့်ပြုချက်ကိုဖတ်ရန်သေချာပါစေ။ အလွယ်ကူဆုံးနည်းလမ်းမှာ File Permissions များကို 644 အထိသတ်မှတ်ရန်မှာ PHP သုံးစွဲသူများသည်လမ်းညွှန်သို့ခွင့်ပြုထားသည်။

 chmod 644 /path/to/file.txt
chown www-data:www-data /path/to/file.txt

2 ။ PHP အသုံးပြုသူများ၏ Access ခွင့်ပြုချက်ကိုအတည်ပြုပါ

အောက်ပါ PHP code မှတဆင့်လက်ရှိ executor အသုံးပြုသူကိုခေတ္တ debug လုပ်နိုင်သည်။

 echo get_current_user(); // သို့မဟုတ်အသုံးပြုပါ posix_geteuid()

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

3 ။ စာဖတ်နိုင်မှုကိုရှာဖွေရန် is_readable () ကိုသုံးပါ

MD5_File () ကိုမခေါ်မီဖိုင်ကိုတိုက်ရိုက်အမှားများကိုရှောင်ရှားရန်ဖတ်နိုင်သည်ကိုစစ်ဆေးပါ။

 $file = '/var/data/file.txt';
if (is_readable($file)) {
    $hash = md5_file($file);
    echo "Hash: $hash";
} else {
    echo "ဖိုင်မဖတ်နိုင်သောဖိုင်မရှိပါ,ကျေးဇူးပြု. ခွင့်ပြုချက်စစ်ဆေးပါ";
}

4 ။ စနစ်လုံခြုံရေးမူဝါဒများစစ်ဆေးပါ

အကယ်. သင်သည် Selinux Enabled System တွင်ရှိပါက chcCCCCO command မှတဆင့်အခြေအနေကိုပြုပြင်ရန်လိုအပ်နိုင်သည်။

 chcon -t httpd_sys_content_t /path/to/file.txt

သို့မဟုတ် Selinux စမ်းသပ်ခြင်းကိုခေတ္တပိတ်ထားခြင်း (ထုတ်လုပ်မှုပတ် 0 န်းကျင်အတွက်အကြံမပေးပါ):

 setenforce 0

4 ။ အခြားအကြံပြုချက်များနှင့်ကြိုတင်ကာကွယ်မှုများ

  • အကယ်. သင်သည် CDN တစ်ခုသို့မဟုတ် https://m66.net/files/check.txt ကဲ့သို့သောဝေးလံသောလိပ်စာကိုအသုံးပြုနေပါက MD5_File () သည် မအောင်မြင်ပါ။ ဘာဖြစ်လို့လဲဆိုတော့၎င်းသည်ဒေသဆိုင်ရာဖိုင်လမ်းကြောင်းများကိုသာလုပ်ဆောင်နိုင်ပြီး URL များကိုမလုပ်နိုင်ပါ။ ဝေးလံခေါင်သီသောဖိုင်များကိုပထမ ဦး ဆုံးဒေါင်းလုပ်လုပ်ပြီးအောက်ပါနည်းလမ်းများကို အသုံးပြု. လုပ်ဆောင်နိုင်သည်။

 error_reporting = E_ALL
display_errors = On