PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် Highlight_File function သည်အလွန်အဆင်ပြေသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်သတ်မှတ်ထားသော PHP ဖိုင်များကို php ဖိုင်များကိုမီးမောင်းထိုးပြသည့်ပုံစံဖြင့်ထုတ်လွှင့်နိုင်သည်။ သို့သော် အဟန့်အတားတစ်ခုတွင် ဖိုင်အကြောင်းအရာများကိုတိုက်ရိုက်ပြသရန်အတွက်ဖိုင်များအားတိုက်ရိုက်ပြသရန်အတွက်ဖိုင်အမျိုးအစားကောင်းခြင်းမပြုလုပ်ပါက,
ဤဆောင်းပါးသည် PHP ဖိုင်များကိုမီးမောင်းထိုးပြရန် Highlight_File ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးရန်အမှန်တကယ်ကုဒ်နမူနာများကိုပေါင်းစပ်ပါလိမ့်မည်။
Highlight_File ဆိုသည်မှာသတ်မှတ်ထားသော PHP file ကိုဖတ်ပြီးသတ်မှတ်ထားသော PHP function တစ်ခုဖြစ်ပြီး၎င်းကို syntax မီးမောင်းထိုးပြခြင်းဖြင့် HTML format ဖြင့်ပြုလုပ်သည်။ ခေါ်ဆိုမှုပုံစံမှာအောက်ပါအတိုင်းဖြစ်သည် -
highlight_file('ဖိုင်လမ်းကြောင်း');
ဥပမာ -
highlight_file('example.php');
ဤလုပ်ဆောင်ချက်သည် default မှမီးမောင်းထိုးပြထားသောကုဒ်ကိုတိုက်ရိုက်ထုတ်လွှင့်လိမ့်မည်။ အကယ်. သင်ကမီးမောင်းထိုးပြထားသောကုဒ်ကိုကြိုးတစ်ချောင်းဖြင့်ရလိုပါကဒုတိယ parameter ကို မှန်ကန်စွာ စစ်ဆေးနိုင်သည်။
အသုံးပြုသူမှ 0 င်ရောက်လာသောလမ်းကြောင်းသည် Highlight_File သို့တိုက်ရိုက်ဖြတ်သန်းသွားပါကအသုံးပြုသူ input ကဲ့သို့သောလမ်းကြောင်းဖြတ်သန်းမှုများကိုဖြစ်ပေါ်စေသည်။
../../../../etc/passwd
သို့မဟုတ်ကြည့်ရှုခြင်းမပြုသင့်သောဆာဗာပေါ်ရှိအထိခိုက်မခံသောဖိုင်များကိုကြည့်ရှုခြင်း, ဒေတာယိုစိမ့်မှုအန္တရာယ်ကိုဖြစ်ပေါ်စေသည်။ ထို့ကြောင့်ဖိုင်လမ်းကြောင်းကို Highlight_File ကို မခေါ်မီတင်းကြပ်စွာစီစစ်ပြီးအတည်ပြုရမည်ဖြစ်သည်။
အောက်ဖော်ပြပါနမူနာကုဒ်တစ်ခုမှာ Highlight_File ကို ဖိုင်လမ်းကြောင်းများပေါ်တွင်တင်းကြပ်စွာစစ်ဆေးရန်မည်သို့ခေါ်ဆိုရမည်ကိုပြသသောနမူနာကုဒ်တစ်ခုဖြစ်သည်။
<?php
// ပြသရန်ခွင့်ပြုထားသည့်ဖိုင်လမ်းညွှန်၏ root လမ်းကြောင်းကိုသတ်မှတ်ပါ
define('BASE_DIR', __DIR__ . '/php_files/');
// အသုံးပြုသူမှတောင်းခံထားသောဖိုင်အမည်ကိုရယူပါ
$file = $_GET['file'] ?? '';
// အခြေခံဘေးကင်းလုံခြုံရေးစစ်ဆေးခြင်း,အချည်းနှီးသောဖိုင်အမည်များသို့မဟုတ်တရားမဝင်ဇာတ်ကောင်များပါ 0 င်ပါ
if (empty($file) || preg_match('/[^a-zA-Z0-9_\-\.]/', $file)) {
die('မမှန်ကန်သောဖိုင်အမည်');
}
// splicing ဖိုင်ကိုမှပကတိလမ်းကြောင်း
$filePath = realpath(BASE_DIR . $file);
// လမ်းကြောင်းသည်ခွင့်ပြုထားသောလမ်းညွှန်တွင်ရှိ, ရှိမရှိထပ်မံအတည်ပြုပါ,ဖြတ်သန်းခြင်းမှလမ်းကြောင်းများတားဆီး
if ($filePath === false || strpos($filePath, realpath(BASE_DIR)) !== 0) {
die('非法ဖိုင်လမ်းကြောင်း');
}
// ဖိုင်တည်ရှိပြီးသာမန်ဖိုင်ရှိမရှိစစ်ဆေးပါ
if (!is_file($filePath)) {
die('ဖိုင်မတည်ရှိပါဘူး');
}
// တယ်လီဖုန်းဆက်ခြင်းhighlight_fileoutput ကို Highlight Code
highlight_file($filePath);
?>
လီဗာပူးလ်မှ ဖိုင်များကို base_dir မှတဆင့်ဖိုင်များ display ကိုပြသသည့် root directory ကိုသတ်မှတ်ပါ။
အက်ခရာစိစစ်ခြင်း - ဖိုင်အမည်များကိုစာလုံးများ, နံပါတ်များ, နံပါတ်များ,
Realpath function : လမ်းကြောင်းဖြတ်သန်းမှုကိုကာကွယ်တားဆီးဖို့လမ်းကြောင်းကို parses နှင့်ပုံမှန် parsizes ။
Path Prefix ကိုက်ညီမှု - ဖိုင်၏တကယ့်လမ်းကြောင်းကိုခွင့်ပြုထားသောလမ်းညွှန်များနှင့်အတူကန့်သတ်ချက်ကိုကျော်လွှားခြင်းကိုတားဆီးရန်ခွင့်ပြုထားသောလမ်းညွှန်နှင့်ရှေ့ဆက်ရမည်ဟုအတည်ပြုပါ။
ဖိုင်တည်ရှိမှုစစ်ဆေးမှု - သတ်မှတ်ထားသောဖိုင်သည်တည်ရှိပြီးသာမန်ဖိုင်တစ်ခုဖြစ်ကြောင်းသေချာပါစေ။
PHPT ဖိုင်များကို PHP_FILES လမ်းညွှန်တွင်ကြည့်ရှုရန်ခွင့်ပြုသည့် PHP ဖိုင်များကိုသင်နေရာချပြီး URL ကို အသုံးပြု. URL ကိုအသုံးပြုပါ။
http://gitbox.net/show_code.php?file=test.php
တောင်းဆိုမှုသည် Php_Files / Test.php ဖိုင်ပါအကြောင်းအရာများကိုလုံခြုံစွာဖတ်ရှုပြီးမီးမောင်းထိုးပြလိမ့်မည်။
TheMight_file function ကိုတင်းကြပ်သောဖိုင်လမ်းကြောင်းစစ်ဆေးမှုများနှင့်အတူ code browsing function ၏လုံခြုံရေးနှင့်တည်ငြိမ်မှုကိုများစွာတိုးတက်စေပြီးလမ်းကြောင်းဖြတ်ကူးခြင်းနှင့်အထိခိုက်မခံသည့်ဖိုင်ယိုစိမ့်မှုအန္တရာယ်ကိုရှောင်ရှားနိုင်သည်။ အကောင်းဆုံးအလေ့အကျင့်အတွက်သော့ချက်မှာ -
ကန့်သတ်ထားသော root directory;
ဖိုင်အမျိုးသည်တရားဝင်မှုနှင့်ကိုက်ညီကြောင်းစစ်ဆေးပါ။
လမ်းကြောင်းသတ်မှတ်ချက်အဖြစ် realpath ကို သုံးပါ။
ဖိုင်လမ်းကြောင်းသည်သတ်မှတ်ထားသောလမ်းညွှန်တွင်ရှိရမည်ကိုစစ်ဆေးပါ။
ဖိုင်သည်တည်ရှိပြီးသာမန်ဖိုင်တစ်ခုဖြစ်ကြောင်းအတည်ပြုပါ။
ထိုသို့သောပြီးပြည့်စုံသောစစ်ဆေးခြင်းလုပ်ငန်းစဉ်သည်ပြောင်းလွယ်ပြင်လွယ်ကုဒ်ကြည့်ရှုခြင်းကိုသေချာစေရုံသာမကဆာဗာလုံခြုံရေးကိုလည်းသေချာစေသည်။