SQL Injection သည်ဆိုက်ဘာတိုက်ခိုက်မှု၏အသုံးများသောနည်းလမ်းဖြစ်သည်။ တိုက်ခိုက်သူများသည်အန္တရာယ်ရှိသော SQL Code ကိုလျှောက်လွှာထဲသို့ထည့်သွင်းခြင်းဖြင့်တရားမ 0 င်စစ်ဆင်ရေးများပြုလုပ်ရန်ဒေတာဘေ့စ်ကိုကိုင်တွယ်ရန် database ကိုကိုင်တွယ်သည်။ PHP ဖွံ့ဖြိုးရေးစီမံကိန်းများတွင်ဤတိုက်ခိုက်မှုအမျိုးအစားသည်အထူးသဖြင့် PHP သည်အသုံးပြုသူ input processing တွင်တိကျခိုင်မာခြင်းမရှိပါကလုံခြုံရေးအားနည်းချက်များသို့ ဦး တည်သွားနိုင်သည်။ Secure PHP application တစ်ခုတည်ဆောက်ရန် developer များသည် SQL Injection ကိုခုခံကာကွယ်ရန်ထိရောက်သောနည်းဗျူဟာများကိုနားလည်ပြီးလက်ခံရမည်။
Preprocessing ထုတ်ပြန်ချက်များသည် SQL Injection ကိုကာကွယ်ရန်ယုံကြည်စိတ်ချရဆုံးနည်းလမ်းတစ်ခုဖြစ်သည်။ SQL ထုတ်ပြန်ချက်များကိုအသုံးပြုသူထည့်သွင်းမှုမှခွဲထုတ်ခြင်းအားဖြင့်ဒေတာဘေ့စ်သည်အန္တရာယ်ရှိသော SQL ကိုကွပ်မျက်ခြင်းမှကာကွယ်ရန်မကွပ်မျက်မီ parameter များကိုအလိုအလျောက်စစ်ဆေးလိမ့်မည်။ ဤနည်းလမ်းသည်လုံခြုံပြီးထိရောက်မှုရှိသည်။
နမူနာကုဒ်:
// ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုတည်ထောင်ရန်
$pdo = new PDO("mysql:host=localhost;dbname=mydb", "username", "password");
// ပြင်ဆင်ထားSQLအသေအချာပေြာဆိုချက်
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
// parameters တွေကိုချည်ထား
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
// quented
$stmt->execute();
// ရလဒ်များကိုရယူပါ
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
ဤနည်းလမ်းသည် SQL ဖွဲ့စည်းပုံကိုထိထိရောက်ရောက်ရေးဆွဲခြင်းမှအခြေခံအားဖြင့်ထိုးသွင်းနိုင်သည့်အချက်အလက်များကိုအခြေခံအားဖြင့်ထိရောက်စွာခွဲခြားထားသည်။
အချို့သောအခြေအနေများတွင် Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအပြင်အလားအလာရှိသောအန္တရာယ်ကို input data ကို filtering ခြင်းဖြင့်လျှော့ချနိုင်သည်။ အသုံးပြုသူ -Socured အချက်အလက်များကိုအတည်ပြုခြင်းသို့မဟုတ်အတည်ပြုခြင်းကတစ်စိတ်တစ်ပိုင်းဆေးထိုးရန်ကြိုးစားမှုကိုတားဆီးနိုင်သည်။
နမူနာကုဒ်:
// Input အချက်အလက်များကို filter လုပ်ပါ
$username = addslashes($_POST['username']);
$password = addslashes($_POST['password']);
// ကရိယာတန်းဆာSQLအသေအချာပေြာဆိုချက်
$sql = "SELECT * FROM users WHERE username = '" . $username . "' AND password = '" . $password . "'";
$result = mysqli_query($conn, $sql);
ဤသို့သော method ကဲ့သို့သောနည်းလမ်းများ () ကဲ့သို့သောနည်းလမ်းများသည်အကန့်အသတ်ဖြင့်သာပေးနိုင်သည်ကိုသတိပြုသင့်သည်။ အဓိကကာကွယ်ရေးနည်းလမ်းများအဖြစ်ကြိုတင်သတ်မှတ်ထားသောထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းကို ဦး စားပေးရန် ဦး စားပေးရန်အကြံပြုပါသည်။
ဒေတာဘေ့စ်အသုံးပြုသူများအတွက်အနည်းဆုံးခွင့်ပြုချက်ပေးခြင်းသည်နောက်ထပ်အရေးကြီးသောလုံခြုံရေးမူဝါဒဖြစ်သည်။ ဖွံ့ဖြိုးရေးစဉ်အတွင်းဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်အုပ်ချုပ်ရေးဆိုင်ရာအခွင့်ထူးများအားလုံးနှင့်အကောင့်တစ်ခုကိုအသုံးမပြုသင့်သော်လည်းတိကျသောစားပွဲများကိုသာခွင့်ပြုသင့်သည်။ SQL Injection Carres တိုက်ခိုက်မှုတစ်ခုဖြစ်ပေါ်လျှင်ပင်၎င်းသည်ဆုံးရှုံးမှုအကွာအဝေးကိုထိရောက်စွာကန့်သတ်နိုင်သည်။
SQL Injection အားနည်းချက်များကိုစနစ်သို့မဟုတ်မူဘောင်ဗားရှင်းအပြောင်းအလဲများအဖြစ်မကြာခဏပေါ်ပေါက်သည်။ developer များသည် Code, Update ကိုအဆင့်မြှင့်တင်ရန်နှင့်ဒေတာဘေ့စ်များနှင့်မူဘောင်များအတွက်လုံခြုံရေးကြေငြာချက်များကိုဂရုပြုသင့်သည်။ အချိန်မီပြုပြင်ခြင်းအားနည်းချက်များနှင့်လုံခြုံရေးပြင်ဆင်ဖာထေးမှုများလျှောက်ထားခြင်းစနစ်သည် system ကိုလုံခြုံအောင်ထိန်းသိမ်းရန်သော့ချက်ဖြစ်သည်။
SQL Injection သည် 0 က်ဘ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အသုံးအများဆုံးနှင့်အန္တရာယ်အရှိဆုံးသောလုံခြုံရေးအားနည်းချက်များအနက်မှတစ်ခုဖြစ်သည်။ ဆင်ခြင်တုံတရားကိုထိန်းချုပ်ခြင်း, ဆင်ခြင်တုံတရားဆိုင်ရာခွင့်ပြုချက်များကိုပုံမှန်ထိန်းချုပ်ခြင်းနှင့်စနစ်ကိုပုံမှန်ထိန်းသိမ်းခြင်းနှင့်မွမ်းမံခြင်းများကိုပုံမှန်ထိန်းချုပ်ခြင်းနှင့်စနစ်ကိုပုံမှန်ထိန်းသိမ်းခြင်းတို့ဖြင့်အန္တရာယ်များကိုအသုံးပြုခြင်းအားဖြင့်အန္တရာယ်များကိုသိသိသာသာလျှော့ချနိုင်သည်။ developer များက coding အဆင့်တွင်လုံခြုံရေးအသိအမြင်တစ်ခုတည်ဆောက်သင့်ပြီးအရင်းအမြစ်မှဘေးကင်းလုံခြုံမှုအန္တရာယ်များကိုကာကွယ်နိုင်သည်။
မှတ်ချက် - အထက်ပါကုဒ်သည်သရုပ်ပြဥပမာတစ်ခုသာဖြစ်သည်။ အမှန်တကယ်စီမံကိန်းတွင်သတ်သတ်မှတ်မှတ်အခြေအနေနှင့်အညီသုံးသပ်ပါ။