လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Parse_URL ၏ကြံ့ခိုင်မှုနှင့်နယ်နိမိတ်အခြေအနေကိုမည်သို့စမ်းသပ်ရမည်နည်း။

Parse_URL ၏ကြံ့ခိုင်မှုနှင့်နယ်နိမိတ်အခြေအနေကိုမည်သို့စမ်းသပ်ရမည်နည်း။

gitbox 2025-05-26

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
)

1 ။ တရားဝင် URL format ကိုစမ်းသပ်ပါ

အချို့သောဘုံနှင့်ကောင်းမွန်စွာဖွဲ့စည်းထားသော 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));
}

2 ။ မပြည့်စုံသော URLs နှင့်အနည်းဆုံးပုံစံများကိုစစ်ဆေးပါ

 $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 များကရလဒ်များသည်မပြည့်စုံသောသို့မဟုတ်မှားယွင်းစွာခွဲခြမ်းစိတ်ဖြာနိုင်သည်ကိုသတိပြုရန်လိုအပ်သည်။

3 ။ တရားမဝင်ပုံစံနှင့်ခြွင်းချက်နယ်နိမိတ်ကိုစစ်ဆေးပါ

 $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) နှင့်ပေါင်းစပ်သင့်သည်။

4 ။ တစ်ခုတည်းသောပစ္စည်းထုတ်ယူမှုကိုစမ်းသပ်ရန်တိကျသောအစိတ်အပိုင်း parameters တွေကိုသုံးပါ

 $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 ကိုရှောင်ရှားနိုင်သည်။

5 ။ Multi-byte ဇာတ်ကောင်နှင့် encoding စမ်းသပ်မှု

 $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 နှင့်ပေါင်းစပ်နိုင်သည်။

6 ။ စီးပွားရေးအခြေအနေများနှင့်ပေါင်းစပ်ခြင်းအပေါ်အာရုံစူးစိုက်ပါ

သတ်သတ်မှတ်မှတ်စီးပွားရေးလုပ်ငန်းများတွင်မတူညီသော 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 များထဲသို့ချထားရန်အကြံပြုသည်။