လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုမည်သို့ထိရောက်စွာတားဆီးနိုင်သနည်း။ လက်တွေ့အစီအစဉ်များကျွမ်းကျင်မှု

PHP တွင် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုမည်သို့ထိရောက်စွာတားဆီးနိုင်သနည်း။ လက်တွေ့အစီအစဉ်များကျွမ်းကျင်မှု

M66 2025-06-16

PHP ပရိုဂရမ်အကြံပြုချက်များ - SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုမည်သို့ကာကွယ်နိုင်သနည်း

ဒေတာဘေ့စ်လုပ်ငန်းများလုပ်ဆောင်သောအခါလုံခြုံရေးသည်အရေးပါသည်။ SQL Injection Attack သည်ဆိုက်ဘာတိုက်ခိုက်မှု၏အသုံးအများဆုံးနည်းလမ်းဖြစ်သည်။ ထို့ကြောင့် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုကာကွယ်ရန်ကျွန်ုပ်တို့၏လျှောက်လွှာများ၏လုံခြုံရေးကိုသေချာစေရန်ကြိုတင်ကာကွယ်မှုများပြုလုပ်ရန်လိုအပ်သည်။

1 ။ parameterized query ကိုသုံးပါ

Parameterized မေးမြန်းချက်များသည် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုကာကွယ်ရန်အထိရောက်ဆုံးနည်းလမ်းတစ်ခုဖြစ်သည်။ အသုံးပြုသူမှထည့်သွင်းထားသောအသုံးပြုသူမှထည့်သွင်းထားသောတန်ဖိုးများကိုခွဲထုတ်ခြင်းဖြင့်အန္တရာယ်ရှိသော SQL Code ကိုကွပ်မျက်ခြင်းကိုရှောင်ရှားသည်။ PHP တွင် PODO (PHP Data Object) extension ကို parameterized မေးမြန်းချက်များကိုအကောင်အထည်ဖော်ရန်သင်အသုံးပြုနိုင်သည်။

PODATEAMED မေးမြန်းချက်များကိုအကောင်အထည်ဖော်ရန် PDO ကို အသုံးပြု. PDO ကို အသုံးပြု. ဥပမာတစ်ခုဖြစ်သည်။

      $ servername = "localhost";
      $ username = "your_username";
      $ စကားဝှက် = "your_password";
      $ dbname = "your_database";

      ကြိုးစားကြည့်ပါ
        $ Conn = PDO အသစ် ("MySQL: host = $ sermername; dbname = $ dBname", $ username, $ username, $ username, $ password);
        $ connatribute (PDO :: Atto: Atto: PDO :: erdo :: erdo :: Ergomode_ erdo_ergration);

        $ username = $ _post ['username'];
        $ စကားဝှက် = $ _post ['password'];

        $ stmt = $ conn-> ပြင်ဆင်မှု ("username =: အသုံးပြုသူအမည် =: စကားဝှက် =: စကားဝှက်" အသုံးပြုသူများမှအသုံးပြုသူများမှ Select *);
        $ stmt-> binparam ('- သုံးစွဲသူအမည်', $ username);
        $ stmt-> binparam (': စကားဝှက်', $ စကားဝှက်);

        $ stmt-> execute ();
        $ ရလဒ် = $ stmt-> fetchall (PDO :: FETT_AST_ASTAR);
      } ဖမ်း (PoCoException $ E) {
        // ခြွင်းချက်ကိုင်တွယ် ...
      }
    

Parameterized Query မှတစ်ဆင့်အသုံးပြုသူထည့်သွင်းထားသောတန်ဖိုးများကို SQL ထုတ်ပြန်ချက်များမှသီးခြားစီလုပ်ဆောင်ပြီး bintparam method မှတဆင့် query charge ကို charger charge သို့ထည့်သွင်းထားသည်။

2 ။ filter ကို filter ကိုနှင့်အသုံးပြုသူ input ကိုအတည်ပြုပါ

Parameterized မေးမြန်းချက်များကိုအသုံးပြုခြင်းအပြင် SQL ထိုးဆေးကိုကာကွယ်ရန်အခြားနည်းလမ်းမှာအသုံးပြုသူထည့်သွင်းမှုများကိုတင်းကြပ်စွာ filter လုပ်ရန်နှင့်အတည်ပြုရန်ဖြစ်သည်။ Filter_Var () နှင့် filter_input ကဲ့သို့သော PHP ၏ filter functions များကို input data ကိုစစ်ဆေးရန်နှင့်သန့်ရှင်းရေးလုပ်ရန်အသုံးပြုနိုင်သည်။

အသုံးပြုသူ input ကိုစစ်ထုတ်ခြင်းနှင့်အတည်ပြုခြင်း၏ဥပမာတစ်ခုမှာ -

      $ username = $ _post ['username'];
      $ စကားဝှက် = $ _post ['password'];

      (! အချည်းနှီးသော ($ username) &&! အချည်းနှီးသော ($ စကားဝှက်)) {
        // filter ကို filter ကို username နှင့် password ကို verify filteredusername = filter_var ($ username, filter_snitize_string);
        $ filteruppassword = filter_var ($ စကားဝှက်, filter_sanitize_string);
        
        // စုံစမ်းမှုစစ်ဆင်ရေးဖျော်ဖြေ .../
      } အခြား
        // အသုံးပြုသူအမည်နှင့်စကားဝှက်သည် echo "အသုံးပြုသူအမည်နှင့်စကားဝှက်သည်ဗလာမဖြစ်နိုင်ပါ"
      }
    

ဤဥပမာတွင် User Input မှမလုံခြုံသောစာလုံးများကိုရှင်းလင်းရန် filter_sanitize_String filter ကို အသုံးပြု. သုံးစွဲသူသည်အန္တရာယ်ရှိသော SQL Code သို့ 0 င်ရောက်လျှင်၎င်းကိုအလိုအလျောက်ဖယ်ရှားခြင်းသို့မဟုတ်လွတ်မြောက်လိမ့်မည်။

3 ။ ဒေတာဘေ့စ်ခွင့်ပြုချက်ကို minimize လုပ်ပါ

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

4 ။ ပုံမှန်အစည်းအဝေးများနှင့်ဒေတာဘေ့စ်များကိုပုံမှန်မွမ်းမံခြင်းနှင့်ထိန်းသိမ်းခြင်း

လျှောက်လွှာများနှင့်ဒေတာဘေ့စ်များ၏လုံခြုံရေးကိုသေချာစေရန်ပုံမှန် update နှင့်ပြုပြင်ထိန်းသိမ်းမှုသည်အလွန်အရေးကြီးသည်။ လူသိများသောလုံခြုံရေးအားနည်းချက်များကိုအချိန်မီသတ်မှတ်ပြီးဒေတာချို့တဲ့မှုသို့မဟုတ်အန္တရာယ်ရှိသော tampering ကိုကာကွယ်ရန်ဒေတာဘေ့စ်ကိုပုံမှန်အားဖြင့်ထောက်ခံသည်ကိုသေချာစေပါ။

အကျဉ်းချုပ်

SQL injection တိုက်ခိုက်မှုများကိုကာကွယ်ခြင်းသည်လျှောက်လွှာလုံခြုံရေးကိုသေချာစေရန်အရေးကြီးသောအဆင့်များထဲမှတစ်ခုဖြစ်သည်။ Parameterized မေးမြန်းချက်များကိုအသုံးပြုခြင်း, စစ်ထုတ်ခြင်းနှင့်အတည်ပြုခြင်းအားဖြင့်ဒေတာဘေ့စ်ခွင့်ပြုချက်များကိုအသုံးပြုခြင်း, ထို့အပြင်ကျွန်ုပ်တို့သည်နောက်ဆုံးပေါ်လုံခြုံရေးခြိမ်းခြောက်မှုများနှင့်အားနည်းချက်များကိုပုံမှန်ဂရုပြုသင့်သည်။