Parse_Url သည် php အတွက် PHP တွင်ပါ 0 င်သော function တစ်ခုဖြစ်သည်။ ၎င်းသည် URL string ကိုအစီအစဉ်, အိမ်ရှင်, ဆိပ်ကမ်း, လမ်းကြောင်း, URL ပုံစံများသည်ကွဲပြားခြားနားပြီး URL အရင်းအမြစ်များကိုအမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်မထိန်းချုပ်နိုင်ပါ။ Parse_Url ၏ပြည့်စုံသောနယ်နိမိတ်စမ်းသပ်မှုပြုလုပ်ရန်အလွန်အရေးကြီးသည်။ ဤဆောင်းပါးသည်ရှုထောင့်အမျိုးမျိုးမှ စ. Parse_url function ကိုစိတ် 0 င်စားမှုကိုမည်သို့စနစ်တကျစမ်းသပ်ရမည်,
$url = "https://gitbox.net:8080/path/to/resource?query=123#section";
$parts = parse_url($url);
print_r($parts);
အောက်ပါအတိုင်း output ကို:
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[path] => /path/to/resource
[query] => query=123
[fragment] => section
)
အချို့သောဘုံနှင့်ကောင်းမွန်စွာဖွဲ့စည်းထားသော URLs များအတွက် Parse_Url ၏အပြုအမူသည်ယေဘုယျအားဖြင့်မျှော်လင့်ချက်များနှင့်ကိုက်ညီသည်။ စိစစ်အတည်ပြုရန်အောက်ပါစမ်းသပ်မှုနမူနာများကိုကျွန်ုပ်တို့ပြင်ဆင်နိုင်သည်။
$urls = [
"http://gitbox.net",
"https://gitbox.net/path",
"ftp://user:[email protected]:21/dir/file.txt",
"http://gitbox.net:8000/?q=test#frag",
"//gitbox.net/path", // scheme-relative
];
foreach ($urls as $url) {
echo "Testing: $url\n";
print_r(parse_url($url));
}
$urls = [
"gitbox.net", // ဘာမှျ scheme
"/relative/path", // ဆွေမျိုးလမ်းကြောင်း
"mailto:[email protected]", // mailto တည်ဆောက်မှု
"file:///C:/path.txt", // file တည်ဆောက်မှု
"http:///path", // မလုံမလောက်မှု host
":123", // သာ ports?
];
foreach ($urls as $url) {
echo "Testing: $url\n";
print_r(parse_url($url));
}
ဤစမ်းသပ်မှုများတွင် Parse_URL သည် အစီအစဉ်များ မပါဘဲကြိုးကြိုးများမပါ 0 င် သည့်ရလဒ်များကိုမကြာခဏပြန်ပို့ဆဲဖြစ်သော်လည်း developer များကရလဒ်များသည်မပြည့်စုံသောသို့မဟုတ်မှားယွင်းစွာခွဲခြမ်းစိတ်ဖြာနိုင်သည်ကိုသတိပြုရန်လိုအပ်သည်။
$urls = [
"http://", // တခုတည်းသော, တဉီးတည်းသော scheme
"http://:@:/", // ဗလာအသုံးပြုသူအမည်နှင့်စကားဝှက်
"://gitbox.net", // မလုံမလောက်မှု scheme နံမယ်
"http://gitbox.net:-80", // ဆိပ်ကမ်းကအနုတ်ပါ
"http://git box.net", // တရားမဝင်နေရာများ
"\0http://gitbox.net", // ပါဝင် null လူသူမ
];
foreach ($urls as $url) {
echo "Testing: $url\n";
print_r(parse_url($url));
}
Parse_Url သည် ဤ strings များအတွက် မှားယွင်းသော သို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာရလဒ်များကိုပြန်ပို့နိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် filter_var ($ URL, filter_valka_URL) ကို filter_var ($ URL, filter_valate_url) နှင့်ပေါင်းစပ်သင့်သည်။
$url = "https://gitbox.net:443/path?arg=value#frag";
$components = [PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_PATH, PHP_URL_QUERY, PHP_URL_FRAGMENT];
foreach ($components as $component) {
var_dump(parse_url($url, $component));
}
ဤနည်းလမ်းသည်ဖြစ်နိုင်ချေရှိသောအခါတိုင်း url ရှိကွက်လပ်များ၏အချို့သောအစိတ်အပိုင်းတစ်ခုလိုအပ်သည့်နေရာများအတွက်သင့်တော်ပြီးမလိုအပ်သောခင်းကျင်း overhead ကိုရှောင်ရှားနိုင်သည်။
$urls = [
"http://gitbox.net/ခေြလမ်း",
"http://gitbox.net/search?q=စမ်းသပ်မှု",
"http://gitbox.net/%E4%B8%AD%E6%96%87", // URL encoded
];
foreach ($urls as $url) {
echo "Testing: $url\n";
print_r(parse_url($url));
}
Parse_Url သည် URL ကိုအလိုအလျောက်ဖွင့်လိမ့်မည်မဟုတ်ကြောင်းသတိပြုပါ။ developer များက၎င်းကို URDCODED သို့မဟုတ် RAWURDEDCODEDED နှင့်ပေါင်းစပ်နိုင်သည်။
သတ်သတ်မှတ်မှတ်စီးပွားရေးလုပ်ငန်းများတွင်မတူညီသော URLs အမျိုးအစားများ (CDN links, third-party interfaces, user input link များစသဖြင့်) ကွဲပြားခြားနားသောစိစစ်မှုနည်းဗျူဟာများရှိသင့်သည်။ ဥပမာအားဖြင့်:
တင်ထားသောအကြောင်းအရာများရှိလင့်များအတွက် Parse_URL ကို ပထမ ဦး ဆုံးအသုံးပြုသင့်ပြီး filter_var နှင့် domain name whitelists များကိုအသုံးပြုသင့်သည်။
နောက်ကွယ်မှ backend splicing URL ကို spliced လုပ်သည့်အခြေအနေများအတွက် XSS သို့မဟုတ် SSRF ကဲ့သို့သောအန္တရာယ်များကိုကာကွယ်ရန်အပိုင်းတစ်ခုစီ၏ဖွဲ့စည်းမှုကိုပြင်းပြင်းထန်ထန်အတည်ပြုသင့်သည်။
Parse_url သည်အစွမ်းထက်သော်လည်းဂရုတစိုက်အသုံးပြုရန်လည်းလိုအပ်သည်။ နယ်နိမိတ်အမျိုးမျိုးအောက်ရှိ၎င်း၏အပြုအမူကိုစနစ်တကျစမ်းသပ်ခြင်းအားဖြင့်၎င်းသည်သူ၏ဝိသေသလက္ခဏာများနှင့်ကန့်သတ်ချက်များကိုပိုမိုနားလည်ပြီးစနစ်၏အမှားသည်းခံမှုနှင့် URLs ၏လုံခြုံရေးကိုတိုးတက်စေနိုင်သည်။ အထက်ပါစာမေးပွဲများကိုအလိုအလျောက်စမ်းသပ်ခြင်း scripts များထဲသို့ချထားရန်အကြံပြုသည်။