လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_Accept () 0 န်ဆောင်မှုတွင် IP Whitelist စစ်ထုတ်စက်ကိုအကောင်အထည်ဖော်ပါ

Socket_Accept () 0 န်ဆောင်မှုတွင် IP Whitelist စစ်ထုတ်စက်ကိုအကောင်အထည်ဖော်ပါ

M66 2025-05-28

PHP, Socket_Accept () ကို အသုံးပြု. Socket-based server program များရေးသားသည့်အခါ client convertions များကိုလက်ခံရန်သော့ချက်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည်အလွန်လက်တွေ့ကျသော်လည်း၎င်းတွင်လက်လှမ်းမီမှုထိန်းချုပ်မှုလုပ်ငန်းများမရှိပါ။ သင်၏ 0 န်ဆောင်မှုသည်သင်၏ 0 န်ဆောင်မှုကိုတိကျသော IP address များကိုသာချိတ်ဆက်ရန်ခွင့်ပြုလိုပါက IP Whitelist filtering ယန္တရားကိုသင်ကိုယ်တိုင်အကောင်အထည်ဖော်ရန်လိုအပ်သည်။

ဤဆောင်းပါးသည် 0 န ဆောင်မှုလုံခြုံရေးနှင့်ထိန်းချုပ်မှုစွမ်းရည်ကိုတိုးတက်စေရန် IP Whiteelisting Function ကို 0 န်ဆောင်မှုပေးရန်မည်သို့အသေးစိတ်ဖော်ပြထားသည်။

အခြေခံ Socket Service ဖွဲ့စည်းပုံ

ပထမ ဦး စွာ Socket_Accept ကို အသုံးပြု. ပုံမှန်အခြေခံ Socket Service ဖွဲ့စည်းပုံကိုကြည့်ကြစို့။

 $host = '0.0.0.0';
$port = 12345;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);

echo "ဆာဗာစတင်သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ $port...\n";

while (true) {
    $clientSocket = socket_accept($socket);
    // ဒီမှာထည့်ပါလိမ့်မယ် IP whitelist filtering ယုတ္တိဗေဒ
}

ပုံမှန်အားဖြင့်အထက်ပါကုဒ်သည် client များအားလုံးမှဆက်သွယ်မှုတောင်းဆိုမှုများကိုအကန့်အသတ်ဖြင့်လက်ခံလိမ့်မည်။ IP Whitelist ထိန်းချုပ်မှုကိုဆက်သွယ်နိုင်ရန်အတွက် Socket_GetPeername () () ကို Socket_Accept () အပြီး () ကိုရယူရန်အတွက် Socket_GetPeername () ကိုအသုံးပြုရန်လိုအပ်သည်။

IP Whitelist filtering ယုတ္တိဗေဒထည့်ပါ

အောက်ဖော်ပြပါသည်ပြုပြင်ထားသောကုဒ်ဖြစ်သည်, ရိုးရှင်းသောအဖြူရောင်ယန္တရားကိုထည့်ခြင်း

 $host = '0.0.0.0';
$port = 12345;

// IP မိန်းမဖြူပညာရှင်
$whitelist = [
    '192.168.1.100',
    '203.0.113.45',
    '198.51.100.23'
];

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);

echo "ဆာဗာစတင်သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ $port...\n";

while (true) {
    $clientSocket = socket_accept($socket);
    
    if ($clientSocket === false) {
        continue;
    }

    socket_getpeername($clientSocket, $clientIp);

    if (!in_array($clientIp, $whitelist)) {
        echo "မှငြင်းပယ်ခံရ $clientIp ဆက်ခြင်း。\n";
        socket_close($clientSocket);
        continue;
    }

    echo "ထံမှလက်ခံခဲ့သည် $clientIp ဆက်ခြင်း。\n";

    // client တောင်းဆိုမှုယုတ္တိဗေဒကိုဤနေရာတွင်ပြုလုပ်သည်
    $welcomeMsg = "အလည်အပတ်ခရီးမှလှိုက်လှဲစွာကြိုဆိုပါသည် m66.net ဝန်ဆောင်မှုများ。\n";
    socket_write($clientSocket, $welcomeMsg, strlen($welcomeMsg));

    socket_close($clientSocket);
}

အဓိကမှတ်စုများ

  1. Socket_egetPeName () - ဒီ function ကိုချိတ်ဆက်ထားသော client ၏ IP address ကိုရရှိရန်အသုံးပြုသည်။

  2. Whitelist Array : သင် $ whiteelist array သို့ဝင်ရောက်ခွင့်ပြုသည့် IP address ကိုထည့်နိုင်သည်။

  3. ဆက်သွယ်မှုထိန်းချုပ်မှု - Whitelist တွင်မဟုတ်သောမိတ်ဖက်အဖွဲ့များအတွက်ကျွန်ုပ်တို့သည် socket_close () ကို တိုက်ရိုက်ဆက်သွယ်မှုကိုတိုက်ရိုက်အသုံးပြုသည်။

ဘေးကင်းလုံခြုံမှုအကြံပေးချက်များ

  • Code တွင် code တွင် hard-code whitelists များကိုမထောက်ခံပါ။

  • တရားမဝင်ဆက်သွယ်မှုကြိုးပမ်းမှုများကိုခြေရာခံရန် logging function ကိုထည့်သွင်းစဉ်းစားနိုင်သည်။

အကျဉ်းချုပ်

IP Whitelist စိစစ်အတည်ပြုယုတ္တိဗေဒကိုပေါင်းထည့်ခြင်းအားဖြင့် socket_accept ပြီးနောက် () , ခွင့်ပြုချက်မရှိဘဲဝင်ရောက်ခြင်းကိုထိရောက်စွာကန့်သတ်ထားနိုင်ပြီး PHP Socket Services ၏လုံခြုံရေးကိုပိုမိုကောင်းမွန်သောကန့်သတ်ထားနိုင်သည်။ အထက်ပါဥပမာသည်အခြေခံအားဖြင့် CIPV6 လိပ်စာများကိုထောက်ပံ့ခြင်းစသည့်အမှန်တကယ်လိုအပ်ချက်များအရ,

ပြင်ပကမ္ဘာသို့ 0 န်ဆောင်မှုပေးသော PHP Socket Program ကိုတည်ဆောက်သည့်အခါ "ပထမဆုံးကာကွယ်ရေးလိုင်း" ကိုသေချာစွာထိန်းသိမ်းထားပါ။ ဒီဆောင်းပါးကသင့်အတွက်အထောက်အကူပြုမယ်လို့မျှော်လင့်ပါတယ်။