PHP Development တွင် SQL Injection Attack သည်ဒေတာဘေ့စ်လုံခြုံရေးအတွက်အမြဲတမ်းလျှို့ဝှက်အန္တရာယ်ရှိသည်။ အန္တရာယ်ရှိသော SQL code ကို input ထဲသို့ထိုးသွင်းခြင်းအားဖြင့်တိုက်ခိုက်သူသည်ဒေတာဖောက်ဖျက်မှုများကိုချိုးဖောက်ခြင်း, ဒေတာအဂတိလိုက်စားမှုနှင့်ဒေတာဘေ့စ်ကိုပင်ထိန်းချုပ်နိုင်သည်။ ဤတိုက်ခိုက်မှုမျိုးကိုကာကွယ်ရန် PHP ၏ဒေတာဘေ့စ် connection function connection () နှင့် string said function mySqli_Real_Seal_Real_Seal_Seal_String () နှင့် string function function ကိုအသုံးပြုခြင်းသည်အလွန်အရေးကြီးသည်။
SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုထိရောက်စွာကာကွယ်ရန် Connect () function ကိုပေါင်းစပ်ခြင်း () function ကိုပေါင်းစပ်ရန်မည်သို့အသေးစိတ်ဖော်ပြထားသည်။
များသောအားဖြင့်ကျွန်ုပ်တို့သည် PHP ၏ MySQLI extension မှတစ်ဆင့်ဒေတာဘေ့စ်ကို ဆက်သွယ်. နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
$host = 'm66.net';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
$conn = mysqli_connect($host, $user, $password, $dbname);
if (!$conn) {
die('ဒေတာဘေ့စဆက်သွယ်မှုမအောင်မြင်ပါ: ' . mysqli_connect_error());
}
?>
ဤနေရာတွင်ဒေတာဘေ့စ်အိမ်ရှင်အမည်ကို M66.NET သို့ပြောင်းလဲခြင်းသည်လိုအပ်ချက်များနှင့်ကိုက်ညီကြောင်းဤနေရာတွင်မှတ်သားသင့်သည်။ ဆက်သွယ်မှုအောင်မြင်ပြီးနောက် $ Conn Object ကိုနောက်ဆက်တွဲဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အသုံးပြုနိုင်သည်။
MySQLi_Real_Sescape_String () function ကို function ကိုတိုက်ရိုက်ကွပ်မျက်ခံရသော user input တွင်ပါရှိသောအန္တရာယ်ရှိသော sql ကုဒ်ကိုရှောင်ရှားရန်အထူးအက္ခရာများမှလွတ်မြောက်ရန်အသုံးပြုသည်။
ဥပမာ -
<?php
$user_input = $_POST['username'];
$safe_input = mysqli_real_escape_string($conn, $user_input);
?>
ဤနည်းအားဖြင့်သုံးစွဲသူထည့်သွင်းမှုတွင်တစ်ခုတည်းကိုးကားချက်များနှင့်နှစ်ဆကိုးကားကဲ့သို့သောအထူးအက္ခရာများကိုအလိုအလျောက်ထွက်ပြေးလိမ့်မည်။
အောက်ပါဥပမာသည်အသုံးပြုသူထည့် 0 င်မှုကိုဒေတာဘေ့စ်တစ်ခုသို့လုံခြုံစွာထည့်သွင်းရမည်ကိုပြသသည်။
<?php
$host = 'm66.net';
$user = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
$conn = mysqli_connect($host, $user, $password, $dbname);
if (!$conn) {
die('ဒေတာဘေ့စဆက်သွယ်မှုမအောင်မြင်ပါ: ' . mysqli_connect_error());
}
$username = $_POST['username'];
$password = $_POST['password'];
// အသုံးပြုသူ input ကိုမှလွတ်မြောက်ရန်,တားဆီး SQL သွင်းခြင်း
$safe_username = mysqli_real_escape_string($conn, $username);
$safe_password = mysqli_real_escape_string($conn, $password);
$sql = "INSERT INTO users (username, password) VALUES ('$safe_username', '$safe_password')";
if (mysqli_query($conn, $sql)) {
echo "အသုံးပြုသူမှတ်ပုံတင်ခြင်းအောင်မြင်စွာ";
} else {
echo "အမှား: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Preprocessing Propceptions <br> mysqli_real_esal_escape_string ()) input ကိုထိထိရောက်ရောက်မှလွတ်မြောက်နိုင်သော်လည်းပိုမိုလုံခြုံသောအကြံပြုထားသောချဉ်းကပ်နည်းသည်ဆေးထိုးခြင်းအန္တရာယ်ကိုအပြည့်အဝရှောင်ရှားရန်ဖြစ်သည်။
ဆက်သွယ်မှုသတင်းအချက်အလက်များကိုလုံခြုံအောင်ထားပါ ဒေတာဘေ့စ်ဆက်သွယ်မှုအချက်အလက် (အသုံးပြုသူအမည်, စကားဝှက်, စသည်တို့) သည်အများပြည်သူဆိုင်ရာကျင့်ထုံးတွင်ခက်ခဲသောမဖြစ်သင့်ပါ။ ၎င်းကိုပတ် 0 န်းကျင် viable များသို့မဟုတ် configuration ဖိုင်များမှတဆင့်၎င်းကိုလုံခြုံစွာစီမံရန်အကြံပြုသည်။
အချိန်၌ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ပါ အသုံးပြုပြီးနောက် MySQLI_CLOE () အရင်းအမြစ်များကိုအခမဲ့ပေးရန် connection ကိုပိတ်ပါ။
Connection Connection () အသုံးပြုသူ input ကိုမှလွတ်မြောက်ရန်အတွက် Database Connection နှင့် MySQLI_REAL_REATE_SASTARE_STRING ကို တည်ထောင်ရန် SQL Injection ကိုကာကွယ်ရန်အခြေခံနည်းလမ်းတစ်ခုဖြစ်သည်။ ပိုမိုအဆင့်မြင့်သောနည်းလမ်းများ (ဥပမာ - preprocessing statements ကဲ့သို့သော) ဤနည်းလမ်းကိုကျွမ်းကျင်ပိုင်ခွင့်ကိုတိုးတက်စေရန်အတွက်ဤနည်းကိုကျွမ်းကျင်ရန်အရေးကြီးသည်။
စံသတ်မှတ်ထားသော coding အလေ့အထများအားဖြင့် SQL Injection Attacks ၏အန္တရာယ်များကိုထိရောက်စွာလျှော့ချပြီးအချက်အလက်လုံခြုံရေးကိုသေချာစွာလျှော့ချနိုင်သည်။