အစောပိုင်း PHP ဗားရှင်းတွင် Get_magic_quotes_GPC () သည် "မှော်ကိုးကားချက်များ" ကိုဖွင့်ထားရှိမရှိစစ်ဆေးရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ SQL Injection Attack မှကာကွယ်ရန်ရည်မှန်းချက်နှင့်အတူ Magic Request သည်အသုံးပြုသူ input data ( $ _get , $ _cookie ) တွင်ကိုးကားထားသောယန္တရားများကိုအလိုအလျောက်ထွက်ပြေးလွတ်မြောက်သည်။ သို့သော် PHP ဗားရှင်းကိုအဆင့်မြှင့်တင်ခြင်းနှင့်အတူဤအင်္ဂါရပ်သည်အန္တရာယ်ကင်းပြီးရှုပ်ထွေးမှုနှစ်ခုလုံးဟုယူဆပြီးနောက်ဆုံးတွင် PHP 5.4 တွင်လုံးဝဖယ်ရှားပစ်ခဲ့သည်။
မည်သို့ပင်ဆိုစေကာမူစီမံကိန်းဟောင်းများနှင့်ကုဒ်များသည် Get_magic_quotes_GPC () ကို အသုံးပြုနေဆဲဖြစ်ပြီးအထူးသဖြင့်မှော်ကိုးကားချက်များကိုလျစ်လျူရှုသောအခါ, ဤဆောင်းပါးသည်ဤဘုံအမှားများကိုဖုံးလွှမ်းသွားမည်,
မှော်ကိုးကားချက်များ ( ' ) , နှစ်ထပ်ကိန်း ( " ), backslash ("), backslash ( \ ) ,
SQL Injection ကိုကာကွယ်ရန်ပုံရသည်, ၎င်းသည်အောက်ပါပြ problems နာများကိုအမှန်တကယ်ဖြစ်ပေါ်စေသည်။
ဒေတာများကိုထပ်ခါတလဲလဲလွတ်မြောက်လာပြီး string ကိုခြွင်းချက်တစ်ခုဖြစ်ပေါ်စေသည်။
ကုဒ်ယုတ္တိဗေဒသည်ဖရိုဖရဲဖြစ်နေပြီးဒေတာများလွတ်မြောက်ခြင်းရှိမရှိကိုပြောရန်ခက်ခဲသည်။
developer များကမှော်ကိုးကားချက်များကိုပိတ်ခြင်း၏အခြေအနေကိုလျစ်လျူရှုလေ့ရှိသည်။
if (get_magic_quotes_gpc()) {
$input = stripslashes($_GET['input']);
} else {
$input = $_GET['input'];
}
ဤကုဒ်သည်မှော်ကိုးကားချက်များကိုဖွင့်သို့မဟုတ်ပိတ်ထားသည်။ မှော်ကိုးကားချက်များအပြီးတွင်အချို့သောသွင်းအားစုများမလွတ်မြောက်ပါက stripslashes စစ်ဆင်ရေးသည်ဒေတာများကိုဖျက်ဆီးလိမ့်မည်။
Get_magic_Quotes_GPC () PHP 5.4 နှင့်နောက်ပိုင်းတွင်စွန့်ပစ်သည်။ အကယ်. ကုဒ်သည်ဤလုပ်ဆောင်မှုကိုတိုက်ရိုက်ခေါ်ဆိုပါကအမှားတစ်ခုရှိသည်။
if (get_magic_quotes_gpc()) { // PHP 7+ အမှားတစ်ခုသတင်းပို့ပါ
// ...
}
developer များစွာသည်ဒေတာ၏အချို့သောအစိတ်အပိုင်းကို $ _get သို့မဟုတ် $ _post တွင်အချို့သောအစိတ်အပိုင်းတစ်ခုသာပြုလုပ်ပြီး $ _cookie ကဲ့သို့သောအခြား hyperglobal variable များရှိဖြစ်နိုင်သောထွက်ပေါက်ဇာတ်ကောင်များကိုလျစ်လျူရှုပါ။
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
$input = stripslashes($_GET['input']);
} else {
$input = $_GET['input'];
}
ဤနည်းအားဖြင့် PHP ဗားရှင်းအသစ်တွင်ဟုခေါ်သော်ငြားလည်းအမှားတစ်ခုဖြစ်ပေါ်စေမည်မဟုတ်ပါ။
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 ဖြစ်ပါစေအချက်အလက်များရှေ့နောက်မညီမှုများမှရှောင်ရှားရန်အလိုအလျောက်ထည့်သွင်းထားသည့်စာလုံးများကိုအလိုအလျောက်ထည့်သွင်းထားနိုင်သည်။
မှော်ကိုးကားချက်များကိုကန့်ကွက်ပြီးကတည်းကဤအင်္ဂါရပ်ကိုလုံးဝပိတ်ထားရန်နှင့် 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();
မှော်ကိုးကားချက်များကိုအားမကိုးပါနှင့် , ၎င်းသည်ခေတ်နောက်ကျ။ အန္တရာယ်ကင်းသောဒီဇိုင်းဖြစ်သည်။
သငျသညျ code အဟောင်းကိုထိန်းသိမ်းထားပါက get_magic_quotes_gpc မ ခေါ်မီ function ကိုသင်ပထမ ဦး ဆုံးစစ်ဆေးသင့်သည်။
ဒေသတွင်းအပြောင်းအလဲများကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားရန် input data အားလုံးတွင်ထွက်ပြေးလာသောဇာတ်ကောင်များအားလုံးကိုမသန့်ရှင်းစွာသန့်ရှင်းပါ။
ကုဒ်ကိုအဆင့်မြှင့်တင်ခြင်းသည်အကောင်းဆုံးဖြစ်သည်။
အထက်ပါနည်းလမ်းများမှတစ်ဆင့်မှော်ကိုးကားချက်များကိုလျစ်လျူရှုခြင်းနှင့်တည်ငြိမ်မှုနှင့်လုံခြုံမှုကိုသေချာစေရန်အတွက်ဖြစ်ပေါ်လာသောပြ problems နာအမျိုးမျိုးကိုသင်ထိရောက်စွာရှောင်ရှားနိုင်သည်။