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

Get_magic_quotes_GPC လုပ်ဆောင်ချက် - မှော်ကိုးကားချက်များကိုလျစ်လျူရှုခြင်းကိုမည်သို့ရှောင်ရှားရမည်နည်း။

gitbox 2025-06-10

အစောပိုင်း PHP ဗားရှင်းတွင် Get_magic_quotes_GPC () သည် "မှော်ကိုးကားချက်များ" ကိုဖွင့်ထားရှိမရှိစစ်ဆေးရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ SQL Injection Attack မှကာကွယ်ရန်ရည်မှန်းချက်နှင့်အတူ Magic Request သည်အသုံးပြုသူ input data ( $ _get , $ _cookie ) တွင်ကိုးကားထားသောယန္တရားများကိုအလိုအလျောက်ထွက်ပြေးလွတ်မြောက်သည်။ သို့သော် PHP ဗားရှင်းကိုအဆင့်မြှင့်တင်ခြင်းနှင့်အတူဤအင်္ဂါရပ်သည်အန္တရာယ်ကင်းပြီးရှုပ်ထွေးမှုနှစ်ခုလုံးဟုယူဆပြီးနောက်ဆုံးတွင် PHP 5.4 တွင်လုံးဝဖယ်ရှားပစ်ခဲ့သည်။

မည်သို့ပင်ဆိုစေကာမူစီမံကိန်းဟောင်းများနှင့်ကုဒ်များသည် Get_magic_quotes_GPC () ကို အသုံးပြုနေဆဲဖြစ်ပြီးအထူးသဖြင့်မှော်ကိုးကားချက်များကိုလျစ်လျူရှုသောအခါ, ဤဆောင်းပါးသည်ဤဘုံအမှားများကိုဖုံးလွှမ်းသွားမည်,


1 ။ မှော်ကိုးကားချက်များကဘာလဲ။

မှော်ကိုးကားချက်များ ( ' ) , နှစ်ထပ်ကိန်း ( " ), backslash ("), backslash ( \ ) ,

SQL Injection ကိုကာကွယ်ရန်ပုံရသည်, ၎င်းသည်အောက်ပါပြ problems နာများကိုအမှန်တကယ်ဖြစ်ပေါ်စေသည်။

  • ဒေတာများကိုထပ်ခါတလဲလဲလွတ်မြောက်လာပြီး string ကိုခြွင်းချက်တစ်ခုဖြစ်ပေါ်စေသည်။

  • ကုဒ်ယုတ္တိဗေဒသည်ဖရိုဖရဲဖြစ်နေပြီးဒေတာများလွတ်မြောက်ခြင်းရှိမရှိကိုပြောရန်ခက်ခဲသည်။

  • developer များကမှော်ကိုးကားချက်များကိုပိတ်ခြင်း၏အခြေအနေကိုလျစ်လျူရှုလေ့ရှိသည်။


2 ။ get_magic_quotes_gpc function အတွက်သာမန်အမှားများ

အမှား 1 - မှော်ကိုးကားချက်တွေအမြဲရှိနေတယ်လို့ယူဆတယ်

 if (get_magic_quotes_gpc()) {
    $input = stripslashes($_GET['input']);
} else {
    $input = $_GET['input'];
}

ဤကုဒ်သည်မှော်ကိုးကားချက်များကိုဖွင့်သို့မဟုတ်ပိတ်ထားသည်။ မှော်ကိုးကားချက်များအပြီးတွင်အချို့သောသွင်းအားစုများမလွတ်မြောက်ပါက stripslashes စစ်ဆင်ရေးသည်ဒေတာများကိုဖျက်ဆီးလိမ့်မည်။

အမှား 2 - လုပ်ဆောင်ချက်မရှိတဲ့ function ကိုရှာဖွေခြင်းမရှိပါ

Get_magic_Quotes_GPC () PHP 5.4 နှင့်နောက်ပိုင်းတွင်စွန့်ပစ်သည်။ အကယ်. ကုဒ်သည်ဤလုပ်ဆောင်မှုကိုတိုက်ရိုက်ခေါ်ဆိုပါကအမှားတစ်ခုရှိသည်။

 if (get_magic_quotes_gpc()) { // PHP 7+ အမှားတစ်ခုသတင်းပို့ပါ
    // ...
}

အမှား 3 - ဒေတာအရင်းအမြစ်များမတူကွဲပြားမှုကိုလျစ်လျူရှုပါ

developer များစွာသည်ဒေတာ၏အချို့သောအစိတ်အပိုင်းကို $ _get သို့မဟုတ် $ _post တွင်အချို့သောအစိတ်အပိုင်းတစ်ခုသာပြုလုပ်ပြီး $ _cookie ကဲ့သို့သောအခြား hyperglobal variable များရှိဖြစ်နိုင်သောထွက်ပေါက်ဇာတ်ကောင်များကိုလျစ်လျူရှုပါ။


3 ။ မှော်ကိုးကားခြင်း၏အခြေအနေကိုလျစ်လျူရှုခြင်းကိုမည်သို့ရှောင်ရှားနိုင်သနည်း။

ဖြေရှင်းချက် 1 - လုပ်ဆောင်ချက်တည်ရှိပြီးအမှားအယွင်းများကိုကာကွယ်ခြင်းရှိမရှိစစ်ဆေးပါ

 if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
    $input = stripslashes($_GET['input']);
} else {
    $input = $_GET['input'];
}

ဤနည်းအားဖြင့် PHP ဗားရှင်းအသစ်တွင်ဟုခေါ်သော်ငြားလည်းအမှားတစ်ခုဖြစ်ပေါ်စေမည်မဟုတ်ပါ။


ဖြေရှင်းချက် 2 - ထွက်ပြေးတိမ်းရှောင်နေသည့်စာလုံးများကိုထည့်သွင်းခြင်းမှလွတ်မြောက်ရန် (မှော်ကိုးကားချက်များကိုဖွင့်ပါက)

 function clean_magic_quotes() {
    if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
        $_GET = array_map('stripslashes', $_GET);
        $_POST = array_map('stripslashes', $_POST);
        $_COOKIE = array_map('stripslashes', $_COOKIE);
    }
}

clean_magic_quotes();

ဤကုဒ်သည်မည်သည့် input source ဖြစ်ပါစေအချက်အလက်များရှေ့နောက်မညီမှုများမှရှောင်ရှားရန်အလိုအလျောက်ထည့်သွင်းထားသည့်စာလုံးများကိုအလိုအလျောက်ထည့်သွင်းထားနိုင်သည်။


ဖြေရှင်းချက် 3 - မှော်ကိုးကားခြင်းနှင့်ခေတ်သစ်လုံခြုံရေးနည်းလမ်းများအသုံးပြုခြင်း

မှော်ကိုးကားချက်များကိုကန့်ကွက်ပြီးကတည်းကဤအင်္ဂါရပ်ကိုလုံးဝပိတ်ထားရန်နှင့် SQL Injection ကိုကာကွယ်ရန်၎င်းကိုအားမကိုးရန်အကြံပြုသည်။ အစားအောက်ပါနည်းလမ်းကိုသုံးပါ။

  • ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များနှင့် parameter စည်းနှောင်ခြင်း (ဥပမာ PDO သို့မဟုတ် MySQLI extension) ကိုသုံးပါ။

  • အသုံးပြုသူ input ကိုတင်းကျပ်စွာစိစစ်ခြင်းနှင့် filtering ။

  • XSS တိုက်ခိုက်မှုများကိုကာကွယ်ရန် htmlspecialchars () ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုသုံးပါ။

နမူနာကုဒ်:

 $pdo = new PDO('mysql:host=gitbox.net;dbname=testdb', 'username', 'password');
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute(['username' => $_GET['username']]);
$results = $stmt->fetchAll();

4 ။ အကျဉ်းချုပ်

  • မှော်ကိုးကားချက်များကိုအားမကိုးပါနှင့် , ၎င်းသည်ခေတ်နောက်ကျ။ အန္တရာယ်ကင်းသောဒီဇိုင်းဖြစ်သည်။

  • သငျသညျ code အဟောင်းကိုထိန်းသိမ်းထားပါက get_magic_quotes_gpc မ ခေါ်မီ function ကိုသင်ပထမ ဦး ဆုံးစစ်ဆေးသင့်သည်။

  • ဒေသတွင်းအပြောင်းအလဲများကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားရန် input data အားလုံးတွင်ထွက်ပြေးလာသောဇာတ်ကောင်များအားလုံးကိုမသန့်ရှင်းစွာသန့်ရှင်းပါ။

  • ကုဒ်ကိုအဆင့်မြှင့်တင်ခြင်းသည်အကောင်းဆုံးဖြစ်သည်။

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