လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> File Path Check နှင့် function ကိုအသုံးပြုရန်အကောင်းဆုံးနည်းလမ်း Highlight_File

File Path Check နှင့် function ကိုအသုံးပြုရန်အကောင်းဆုံးနည်းလမ်း Highlight_File

gitbox 2025-06-03

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် Highlight_File function သည်အလွန်အဆင်ပြေသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်သတ်မှတ်ထားသော PHP ဖိုင်များကို php ဖိုင်များကိုမီးမောင်းထိုးပြသည့်ပုံစံဖြင့်ထုတ်လွှင့်နိုင်သည်။ သို့သော် အဟန့်အတားတစ်ခုတွင် ဖိုင်အကြောင်းအရာများကိုတိုက်ရိုက်ပြသရန်အတွက်ဖိုင်များအားတိုက်ရိုက်ပြသရန်အတွက်ဖိုင်အမျိုးအစားကောင်းခြင်းမပြုလုပ်ပါက,

ဤဆောင်းပါးသည် PHP ဖိုင်များကိုမီးမောင်းထိုးပြရန် Highlight_File ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးရန်အမှန်တကယ်ကုဒ်နမူနာများကိုပေါင်းစပ်ပါလိမ့်မည်။


1 ။ နိဒါန်း Highlight_File function ကိုမိတ်ဆက်ပါ

Highlight_File ဆိုသည်မှာသတ်မှတ်ထားသော PHP file ကိုဖတ်ပြီးသတ်မှတ်ထားသော PHP function တစ်ခုဖြစ်ပြီး၎င်းကို syntax မီးမောင်းထိုးပြခြင်းဖြင့် HTML format ဖြင့်ပြုလုပ်သည်။ ခေါ်ဆိုမှုပုံစံမှာအောက်ပါအတိုင်းဖြစ်သည် -

 highlight_file('ဖိုင်လမ်းကြောင်း');

ဥပမာ -

 highlight_file('example.php');

ဤလုပ်ဆောင်ချက်သည် default မှမီးမောင်းထိုးပြထားသောကုဒ်ကိုတိုက်ရိုက်ထုတ်လွှင့်လိမ့်မည်။ အကယ်. သင်ကမီးမောင်းထိုးပြထားသောကုဒ်ကိုကြိုးတစ်ချောင်းဖြင့်ရလိုပါကဒုတိယ parameter ကို မှန်ကန်စွာ စစ်ဆေးနိုင်သည်။


2 ။ လက်ရှိလုံခြုံရေးအန္တရာယ်များ

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

 ../../../../etc/passwd

သို့မဟုတ်ကြည့်ရှုခြင်းမပြုသင့်သောဆာဗာပေါ်ရှိအထိခိုက်မခံသောဖိုင်များကိုကြည့်ရှုခြင်း, ဒေတာယိုစိမ့်မှုအန္တရာယ်ကိုဖြစ်ပေါ်စေသည်။ ထို့ကြောင့်ဖိုင်လမ်းကြောင်းကို Highlight_File ကို မခေါ်မီတင်းကြပ်စွာစီစစ်ပြီးအတည်ပြုရမည်ဖြစ်သည်။


3 ။ အကောင်းဆုံးအလေ့အကျင့်: Path Checking နှင့် တွဲဖက်. 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 ကိုက်ညီမှု - ဖိုင်၏တကယ့်လမ်းကြောင်းကိုခွင့်ပြုထားသောလမ်းညွှန်များနှင့်အတူကန့်သတ်ချက်ကိုကျော်လွှားခြင်းကိုတားဆီးရန်ခွင့်ပြုထားသောလမ်းညွှန်နှင့်ရှေ့ဆက်ရမည်ဟုအတည်ပြုပါ။

  • ဖိုင်တည်ရှိမှုစစ်ဆေးမှု - သတ်မှတ်ထားသောဖိုင်သည်တည်ရှိပြီးသာမန်ဖိုင်တစ်ခုဖြစ်ကြောင်းသေချာပါစေ။


4 ။ နမူနာသရုပ်ပြ

PHPT ဖိုင်များကို PHP_FILES လမ်းညွှန်တွင်ကြည့်ရှုရန်ခွင့်ပြုသည့် PHP ဖိုင်များကိုသင်နေရာချပြီး URL ကို အသုံးပြု. URL ကိုအသုံးပြုပါ။

 http://gitbox.net/show_code.php?file=test.php

တောင်းဆိုမှုသည် Php_Files / Test.php ဖိုင်ပါအကြောင်းအရာများကိုလုံခြုံစွာဖတ်ရှုပြီးမီးမောင်းထိုးပြလိမ့်မည်။


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

TheMight_file function ကိုတင်းကြပ်သောဖိုင်လမ်းကြောင်းစစ်ဆေးမှုများနှင့်အတူ code browsing function ၏လုံခြုံရေးနှင့်တည်ငြိမ်မှုကိုများစွာတိုးတက်စေပြီးလမ်းကြောင်းဖြတ်ကူးခြင်းနှင့်အထိခိုက်မခံသည့်ဖိုင်ယိုစိမ့်မှုအန္တရာယ်ကိုရှောင်ရှားနိုင်သည်။ အကောင်းဆုံးအလေ့အကျင့်အတွက်သော့ချက်မှာ -

  • ကန့်သတ်ထားသော root directory;

  • ဖိုင်အမျိုးသည်တရားဝင်မှုနှင့်ကိုက်ညီကြောင်းစစ်ဆေးပါ။

  • လမ်းကြောင်းသတ်မှတ်ချက်အဖြစ် realpath ကို သုံးပါ။

  • ဖိုင်လမ်းကြောင်းသည်သတ်မှတ်ထားသောလမ်းညွှန်တွင်ရှိရမည်ကိုစစ်ဆေးပါ။

  • ဖိုင်သည်တည်ရှိပြီးသာမန်ဖိုင်တစ်ခုဖြစ်ကြောင်းအတည်ပြုပါ။

ထိုသို့သောပြီးပြည့်စုံသောစစ်ဆေးခြင်းလုပ်ငန်းစဉ်သည်ပြောင်းလွယ်ပြင်လွယ်ကုဒ်ကြည့်ရှုခြင်းကိုသေချာစေရုံသာမကဆာဗာလုံခြုံရေးကိုလည်းသေချာစေသည်။