PHP, Socket_Accept () ကို အသုံးပြု. Socket-based server program များရေးသားသည့်အခါ client convertions များကိုလက်ခံရန်သော့ချက်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည်အလွန်လက်တွေ့ကျသော်လည်း၎င်းတွင်လက်လှမ်းမီမှုထိန်းချုပ်မှုလုပ်ငန်းများမရှိပါ။ သင်၏ 0 န်ဆောင်မှုသည်သင်၏ 0 န်ဆောင်မှုကိုတိကျသော IP address များကိုသာချိတ်ဆက်ရန်ခွင့်ပြုလိုပါက IP Whitelist filtering ယန္တရားကိုသင်ကိုယ်တိုင်အကောင်အထည်ဖော်ရန်လိုအပ်သည်။
ဤဆောင်းပါးသည် 0 န ် ဆောင်မှုလုံခြုံရေးနှင့်ထိန်းချုပ်မှုစွမ်းရည်ကိုတိုးတက်စေရန် IP Whiteelisting Function ကို 0 န်ဆောင်မှုပေးရန်မည်သို့အသေးစိတ်ဖော်ပြထားသည်။
ပထမ ဦး စွာ 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 () ကိုအသုံးပြုရန်လိုအပ်သည်။
အောက်ဖော်ပြပါသည်ပြုပြင်ထားသောကုဒ်ဖြစ်သည်, ရိုးရှင်းသောအဖြူရောင်ယန္တရားကိုထည့်ခြင်း
$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);
}
Socket_egetPeName () - ဒီ function ကိုချိတ်ဆက်ထားသော client ၏ IP address ကိုရရှိရန်အသုံးပြုသည်။
Whitelist Array : သင် $ whiteelist array သို့ဝင်ရောက်ခွင့်ပြုသည့် IP address ကိုထည့်နိုင်သည်။
ဆက်သွယ်မှုထိန်းချုပ်မှု - Whitelist တွင်မဟုတ်သောမိတ်ဖက်အဖွဲ့များအတွက်ကျွန်ုပ်တို့သည် socket_close () ကို တိုက်ရိုက်ဆက်သွယ်မှုကိုတိုက်ရိုက်အသုံးပြုသည်။
Code တွင် code တွင် hard-code whitelists များကိုမထောက်ခံပါ။
တရားမဝင်ဆက်သွယ်မှုကြိုးပမ်းမှုများကိုခြေရာခံရန် logging function ကိုထည့်သွင်းစဉ်းစားနိုင်သည်။
IP Whitelist စိစစ်အတည်ပြုယုတ္တိဗေဒကိုပေါင်းထည့်ခြင်းအားဖြင့် socket_accept ပြီးနောက် () , ခွင့်ပြုချက်မရှိဘဲဝင်ရောက်ခြင်းကိုထိရောက်စွာကန့်သတ်ထားနိုင်ပြီး PHP Socket Services ၏လုံခြုံရေးကိုပိုမိုကောင်းမွန်သောကန့်သတ်ထားနိုင်သည်။ အထက်ပါဥပမာသည်အခြေခံအားဖြင့် CIPV6 လိပ်စာများကိုထောက်ပံ့ခြင်းစသည့်အမှန်တကယ်လိုအပ်ချက်များအရ,
ပြင်ပကမ္ဘာသို့ 0 န်ဆောင်မှုပေးသော PHP Socket Program ကိုတည်ဆောက်သည့်အခါ "ပထမဆုံးကာကွယ်ရေးလိုင်း" ကိုသေချာစွာထိန်းသိမ်းထားပါ။ ဒီဆောင်းပါးကသင့်အတွက်အထောက်အကူပြုမယ်လို့မျှော်လင့်ပါတယ်။