Web Development အတွက် PHP ကိုအသုံးပြုသောအခါ, SQL Inject ကဲ့သို့သောလုံခြုံရေးဆိုင်ရာကိစ္စရပ်များမှကာကွယ်ရန်ကျွန်ုပ်တို့သည်အသုံးပြုသူမှထည့်သွင်းထားသောအချက်အလက်များနှင့်သင့်လျော်သောထွက်ပြေးလာသူများကိုလုပ်ဆောင်ရန်လိုအပ်သည်။ MySQL databases များကိုအသုံးပြုသောအခါ PHP ၏ MySQLI extension သည် strings မှ ထွက်ပြေးတိမ်းရှောင် လေ့ရှိပြီးဒေတာဘေ့စ်လုပ်ငန်းများ၏လုံခြုံရေးကိုတိုးတက်အောင်ပြုလုပ်လေ့ရှိသည်။
MySQLI (MySQL သည်တိုးတက်လာသည်) extension သည် MySQL database များနှင့်အပြန်အလှန်ဆက်သွယ်မှုအတွက် PHP တွင် extension module တစ်ခုဖြစ်သည်။ MySQL extensions များနှင့်နှိုင်းယှဉ်ပါက MySQLI သည် ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များ, ငွေပေးချေမှုထိန်းချုပ်မှုနှင့်ပိုမိုပြည့်လျှံသောအမှားကိုင်တွယ်မှုယန္တရားကိုထောက်ပံ့ခြင်းစသည့်ပိုမိုကောင်းမွန်သောလုပ်ဆောင်မှုများကိုပြုလုပ်သည်။
MySQLI extension ကိုအသုံးပြုရန်, သင်ပထမ ဦး ဆုံးဒေတာဘေ့စ် connection အရာဝတ်ထုကိုအောက်ပါအတိုင်းဖန်တီးရန်လိုအပ်သည် -
<code> $ host = 'localhost'; $ user = 'db_user'; $ စကားဝှက် = 'DB_Password', $ database = 'Test_DB',$ can = MySQLI ($ host, $ အသုံးပြုသူ, $ password, $ database);
IF ($ conn-> connect_error) {
သေဆုံး ('ဆက်သွယ်မှုသည်မအောင်မြင်ပါ။ ' ။ $ Conn-> Connect_ERRORR);
}
</ code>
ဤကုဒ်သည် MySQL server သို့ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ရန်နှင့်ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန်ဤကုဒ်သည် MySQLI Constructor ကိုအသုံးပြုသည်။
Real_escape_String သည် MySQLI အရာဝတ်ထုများမှ SQL ထုတ်ပြန်ချက်များတွင်အသုံးပြုသောကြိုးများမှလွတ်မြောက်ရန်နည်းလမ်းတစ်ခုဖြစ်သည်။ ၎င်းသည် SQL syntax ကိုဖျက်ဆီးခြင်းမှကာကွယ်ရန်အထူးအက္ခရာများ (ဥပမာကိုးကားချက်များ, backslashes စသည်တို့) ကိုကာကွယ်နိုင်သည်။
၎င်း၏ပုံမှန်အသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
<code> $ user_input = "O'Reilly"; $ Safe_INPUT = $ conn-> Real_escape_String ($ user_input); $ sql = "Selection = '$ Safe_INPPPATE" ဆိုတဲ့အသုံးပြုသူတွေဆီကနေ Select * " $ ရလဒ် = $ conn-> query ($ sql); </ code>ဤဥပမာတွင်အသုံးပြုသူမှ O'Reilly 0 င်ရောက်ခြင်းသည်မလွတ်မြောက်ပါက SQL ကြေငြာချက်တွင်အမှားတစ်ခုဖြစ်ပေါ်စေလိမ့်မည်သို့မဟုတ်လုံခြုံရေးပြ problems နာများပင်ဖြစ်ပေါ်စေလိမ့်မည်။ Real_escape_String Method သည် One One One One One One One One ကိုအလိုအလျောက်လွတ်မြောက်စေပြီးတရားဝင်နှင့်လုံခြုံစိတ်ချရသော SQL ထုတ်ပြန်ကြေငြာချက်ကိုတည်ဆောက်သည်။
ဒေတာဘေ့စ connection ပြီးနောက်အသုံးပြုရမည်ဖြစ်သည်
Real_escape_String သည် လက်ရှိဆက်သွယ်မှု၏ဇာတ်ကောင်အစုပေါ်တွင်မူတည်သည်။ ထို့ကြောင့်ဆက်သွယ်မှုအောင်မြင်ပြီးနောက်ဟုခေါ်ရမည်။
Preprocessing ထုတ်ပြန်ချက်များအတွက်အစားထိုးနှင့်ညီမျှသည်မဟုတ် Real_escape_String သည် လုံခြုံရေးအချို့ကိုပေးနိုင်သော်လည်း၎င်းသည်ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုလုံးဝ အစားထိုး. မရပါ။ Preprocessing ထုတ်ပြန်ချက်များသည် SQL Injection ကိုကာကွယ်ရန်အလုံခြုံဆုံးနည်းလမ်းဖြစ်သည်။
ဇာတ်ကောင်အစုံတသမတ်တည်းဖြစ်ရန်လိုအပ်သည် PHP မှအသုံးပြုသော PHP နှင့်ဒေတာဘေ့စ်အစပိုင်းတွင်ဖော်ပြပါ (UTF8MB4 ကဲ့သို့သော) သည်တသမတ်တည်းဖြစ်ကြောင်းသေချာပါစေ။
အသုံးပြုသူ input ကိုလက်ခံရရှိရန်နှင့်၎င်းကို real_escape_string မှတဆင့်လုပ်ဆောင်ရန် HTML form ကိုအသုံးပြုခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။
<code> & lt; ပုံစံနည်းလမ်း = "post" action = "https://gitbox.net/process.php" & GT; အသုံးပြုသူအမည်: & ဒု; input type = "text" အမည် = "Username" & GT; & LT; input type = "တင်ရန်" တန်ဖိုး = "Submit" & GT; & lt; / form & gt; </ code>Procession.php တွင်လုပ်ငန်းစဉ်။
<code> $ can = MySQLI ('localhost', 'userhost', 'Password', 'Database', IF ($ conn-> connect_error) {
သေဆုံး ('ဆက်သွယ်မှုသည်မအောင်မြင်ပါ။ ' ။ $ Conn-> Connect_ERRORR);
}
$ username = $ _post ['username'];
$ safe_username = $ conn-> Real_escape_String ($ username);
$ sql = "username = '$ safe_username' 'အသုံးပြုသူများမှရွေးချယ်ပါ။
$ ရလဒ် = $ conn-> query ($ sql);
အကယ်. ($ ရလဒ် && $ ရလဒ်> num_row> 0)
ECHO "အသုံးပြုသူသည်ရှိပြီးသားဖြစ်သည်";
} အခြား
Echo "အသုံးပြုသူမတည်ရှိပါဘူး";
}
</ code>
MySQLI :: Real_escape_String သည် SQL Injection ကိုကာကွယ်ရန် PHP တွင်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ အသုံးပြုသူ input တွင်အထူးအက္ခရာများမှလွတ်မြောက်ခြင်းဖြင့် SQL ထုတ်ပြန်ချက်များအားတရားဝင်ခွင့်ပြုချက်ကိုကာကွယ်ပေးသည်။ သို့သော်ပိုမိုလုံခြုံသောအတွက် developer များကကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအသုံးပြုမှုကို ဦး စားပေးသင့်သည်။ Real_escape_String ၏အခြေခံအသုံးပြုမှုကိုနားလည်ပြီးနောက်အသုံးပြုသူ input ကိုပိုမိုယုံကြည်စိတ်ချစွာလုပ်ဆောင်နိုင်ပြီးဒေတာဘေ့စ်နှင့်လုံလုံခြုံခြုံနှင့်ဆက်သွယ်နိုင်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli