PHP ၏ ISAMETREATGD2 function ကိုအသုံးပြုပြီး GD2 ပုံရိပ်များကိုတင်သောအခါ, input path ကိုမှန်ကန်စွာမပြုလုပ်ပါက, သတ်သတ်မှတ်မှတ်လမ်းကြောင်းများဆောက်လုပ်ခြင်းဖြင့်တိုက်ခိုက်သူသည်ဆာဗာတွင်အထိခိုက်မခံသောဖိုင်များကိုရယူနိုင်သည်။ ထို့ကြောင့်လမ်းကြောင်းဖြတ်သန်းမှုကိုမှန်ကန်စွာတားဆီးရန်အလွန်အရေးကြီးသည်။ ဤဆောင်းပါးသည်ထိုကဲ့သို့သောတိုက်ခိုက်မှုများကိုမည်သို့ထိရောက်စွာတားဆီးရမည်ကိုရှင်းပြပါမည်။
လမ်းကြောင်းဖြတ်သန်းမှုသည်တိုက်ခိုက်သူအားတိုက်ခိုက်သူကိုရည်ညွှန်းသည် ။ PHP တွင် ImagecreathrintGD2 function သည်မှန်ကန်သောစစ်ဆေးမှုလမ်းကြောင်းမပါဘဲပုံတစ်ပုံကို 0 င်ပါကဆာဗာတင်ခြင်းဆိုင်ရာအထိခိုက်မခံသောသတင်းအချက်အလက်များကိုယိုစိမ့်သွားစေနိုင်သည်။
Imagecreathringdgd2 function သည် PHP မှ image files များမှရုပ်ပုံများကို GD2 format ဖြင့်ဖန်တီးရန် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ အခြေခံအသုံးပြုမှုနည်းလမ်းမှာအောက်ပါအတိုင်းဖြစ်သည် -
$image = imagecreatefromgd2($filename);
ဤလုပ်ဆောင်ချက်သည်ဖိုင်လမ်းကြောင်း parameter $ filename ကို ယူပြီးပုံကြူးကိုအရင်းအမြစ်တစ်ခုပြန်ပို့သည်။ အကယ်. လမ်းကြောင်းသည်မမှန်ကန်ပါကမှားယွင်းသောသို့မဟုတ်ဖိုင်ကိုလက်လှမ်းမမှီပါက မှားယွင်းသောအယူမှား သည်။
Attackers သည်ဖိုင်လမ်းကြောင်းများကိုပြုပြင်ခြင်းဖြင့်လုံခြုံရေးကန့်သတ်ချက်များကိုကျော်လွှားနိုင်သည်။
$image = imagecreatefromgd2('/var/www/html/uploads/../../etc/passwd');
အထက်ပါဥပမာတွင်တိုက်ခိုက်သူသည် server ပေါ်တွင် / etc / passwd file ကို server တွင်ကြည့်ရှုရန်ကြိုးစားသည် ။
လမ်းကြောင်းဖြတ်သန်းမှုကိုတားဆီးရန်အသုံးပြုသူမှထည့်သွင်းထားသောလမ်းကြောင်းများကိုတိကျစွာစစ်ဆေးပြီးစစ်ထုတ်သင့်သည်။ ဒီမှာထိရောက်သောကြိုတင်ကာကွယ်မှုများပြုလုပ်နိုင်ပါတယ်။
ပထမ ဦး စွာဖိုင်လမ်းကြောင်းသည်ယုံကြည်စိတ်ချထိုက်ကြောင်းသေချာပါစေ။ သင် PHP ၏ Realpath () function ကိုသုံးနိုင်သည်။ အဆိုပါ functath () function ကို function ကိုပုံမှန် reflute လမ်းကြောင်းကိုပြန်ပို့ခြင်းနှင့်သင်္ကေတ links အားလုံး parses ။
$filename = '/var/www/html/uploads/' . $_GET['filename']; // အသုံးပြုသူမှထည့်သွင်းထားသောဖိုင်လမ်းကြောင်းကိုရယူပါ
$realpath = realpath($filename);
if ($realpath && strpos($realpath, '/var/www/html/uploads/') === 0) {
// လမ်းကြောင်းတရားဝင်သည်,နှင့်ခွင့်ပြု directory အတွင်း
$image = imagecreatefromgd2($realpath);
} else {
// မမှန်ကန်သောလမ်းကြောင်း,ဝန်ကိုငြင်းပယ်
echo "Invalid file path!";
}
အထက်ပါကုဒ်တွင်ဖိုင်၏ပကတိလမ်းကြောင်းကိုရယူရန်အတွက်ပထမ ဦး ဆုံး function () function ကို ဦး စွာအသုံးပြုသည်။ ထို့နောက်၎င်းသည် / www / www / html / uploads / directory တွင်တည်ရှိသည်ကိုစစ်ဆေးပါ။ မရရှိလျှင်ဖိုင်ကိုဖွင့်ရန်ငြင်းဆန်သည်။
တင်ရန်ခွင့်ပြုထားသည့်ဖိုင်အမည်များကို whitelist ကိုကန့်သတ်ထားနိုင်သည်။ ၎င်းသည်အန္တရာယ်ရှိသောဖိုင်များကိုတင်ခြင်းနှင့်တင်ခြင်းမှတားဆီးလိမ့်မည်။
$allowed_files = ['image1.gd2', 'image2.gd2']; // မိန်းမဖြူပညာရှင်
$filename = $_GET['filename'];
if (in_array($filename, $allowed_files)) {
$image = imagecreatefromgd2('/var/www/html/uploads/' . $filename);
} else {
echo "File not allowed!";
}
Symlinks လမ်းကြောင်းဖြတ်သန်းတိုက်ခိုက်မှုများပြုလုပ်ရန်အသုံးပြုနိုင်သည်။ ဖိုင်လမ်းကြောင်းသည်ရုပ်ပိုင်းဆိုင်ရာပစ္စုပ္ပန်ဖြစ်ပြီး Realpath () အသုံးပြုခြင်းဖြင့်သင်္ကေတအချင်းချင်းချိတ်ဆက်မှုများမပါ 0 င်နိုင်ပါ။ ၎င်းသည်ပုံဆောင်ဆက်သွယ်မှုများမှတဆင့် 0 င်ရောက်ခြင်းမပြုသင့်သောဖိုင်များသို့ 0 င်ရောက်ခြင်းကိုကာကွယ်ပေးသည်။
$filename = '/var/www/html/uploads/' . $_GET['filename'];
$realpath = realpath($filename);
if ($realpath && strpos($realpath, '/var/www/html/uploads/') === 0 && !is_link($realpath)) {
// လမ်းကြောင်းတရားဝင်သည်,နှင့်အဘယ်သူမျှမသင်္ကေတ links
$image = imagecreatefromgd2($realpath);
} else {
echo "Invalid file path or symbolic link detected!";
}
PHP ၏ ImagecreatGDGD2 function ကို အသုံးပြု. GD2 ပုံရိပ်များကိုတင်သောအခါ traversal တိုက်ခိုက်မှုများကိုကာကွယ်ခြင်းသည်အလွန်အရေးကြီးသည်။ ထိုကဲ့သို့သောတိုက်ခိုက်မှုများ၏အန္တရာယ်ကိုဖိုင်လမ်းကြောင်းများစစ်ဆေးခြင်းဖြင့်ဖောင်းပွသူများကိုစစ်ဆေးခြင်း, သင်္ကေတများစစ်ဆေးခြင်းကိုစစ်ဆေးခြင်း, သင်္ကေတများလုံခြုံမှုကိုစစ်ဆေးရန်နှင့်အထိခိုက်မခံသောအချက်အလက်များကိုသေချာစေရန်နှင့်အထိခိုက်မခံသောအချက်အလက်ချိုးဖောက်မှုများကိုသေချာစေရန်အမြဲတမ်းသတိထားပါ။