လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> စာဝှက်ထားတဲ့သိုလှောင်မှုအတွက် Serialize: ဒေတာလုံခြုံရေးကိုဘယ်လိုသေချာအောင်လုပ်မလဲ။

စာဝှက်ထားတဲ့သိုလှောင်မှုအတွက် Serialize: ဒေတာလုံခြုံရေးကိုဘယ်လိုသေချာအောင်လုပ်မလဲ။

gitbox 2025-05-19

Serialize function ၏လုပ်ဆောင်ချက်သည် PHP ဒေတာဖွဲ့စည်းပုံ (ဥပမာ array များ, အရာဝတ်ထုများ) ကို string တစ်ခုအဖြစ်ပြောင်းလဲရန်ဖြစ်သည်။ ဒီ function ကိုမှတစ်ဆင့်ရှုပ်ထွေးသောအချက်အလက်များကိုသိမ်းဆည်းထားနိုင်သောပုံစံသို့ပြောင်းလဲနိုင်သည်။

ဥပမာ -

 $data = array("username" => "admin", "password" => "123456");
$serialized_data = serialize($data);
echo $serialized_data;

output string ကိုအောက်ပါအတိုင်းဖြစ်သည် -

 a:2:{s:8:"username";s:5:"admin";s:8:"password";s:6:"123456";}

ဤ string ကိုဖိုင် (သို့) ဒေတာဘေ့စ်တွင်လုံခြုံစွာသိမ်းဆည်းထားနိုင်သည်။ အစောပိုင်းတွင်ဖော်ပြခဲ့သည့်အတိုင်း serialize ကိုယ်နှိုက်သည်စာဝှက်ခြင်းယန္တရားကိုမပေးနိုင်ပါ,

2 ။ စာဝှက်ထားတဲ့သိုလှောင်မှု

ထုတ်လွှင့်ခြင်းသို့မဟုတ်သိုလှောင်မှုအတွင်းသိုလှောင်ထားသည့်အချက်အလက်များ၏လုံခြုံရေးကိုသေချာစေရန် Serialize string ကိုစာဝှက်ရန်လိုအပ်သည်။ ဘုံစာဝှက်စနစ်နည်းလမ်းများအချိုးကျ encryption နှင့်အချိုးမညီစာဝှက်စနစ်များပါဝင်သည်။ PHP တွင်အချက်အလက်များကိုစာဝှက်ရန် Opensl_encrypt , Sodium_Crypto_secretbox စသည့် encryption faction များကိုသုံးနိုင်သည်။

Openssl ကိုအသုံးပြုပြီးအချက်အလက်များကိုစာဝှက်ပါ

သိုလှောင်မှုအပေါ် အခြေခံ. သိုလှောင်မှုကိုစာဝှက်ရန်မည်သို့ စာဝှက် ရမည်ဆိုလျှင်နမူနာကုဒ်ဖြစ်သည်။

 $data = array("username" => "admin", "password" => "123456");
$serialized_data = serialize($data);

// သော့တစ်ခုထုတ်လုပ်ပါ(ယေဘုယျအားဖြင့်၎င်းကိုလျှို့ဝှက်စွာသိမ်းဆည်းထားသင့်သည်)
$key = "secretkey123";

// အသုံးပြု OpenSSL စာဝှက်ပယ်
$encrypted_data = openssl_encrypt($serialized_data, "AES-128-ECB", $key);

// စာဝှက်ထားတဲ့ဒေတာသိုလှောင်
echo "Encrypted: " . $encrypted_data;

အထက်ပါကုဒ်များတွင်အချက်အလက်များကို serialize သုံး. string တစ်ခုထဲသို့ပထမဆုံးပြောင်းလဲပြီး Openssl_encrypt function မှစာဝှက်သည်။ Symmetric encryption algorithm AES-128-128-ECB ကိုဤတွင်အသုံးပြုသည် (အမှန်တကယ် applications များတွင်သင်သည်အခြား encryption နည်းလမ်းများကိုရွေးချယ်နိုင်သည်။ ) စာဝှက်ပြီးတဲ့နောက်ဒေတာကိုမဖတ်နိုင်တဲ့ဖြစ်လာလိမ့်မယ်။

ဒေတာကို decrypt

သိုလှောင်ထားသည့်စာဝှက်ထားတဲ့ဒေတာကိုသုံးဖို့လိုတဲ့အခါ OpenSSL_Decrypt ကို စာဝှက်ဖြည်ဖို့သုံးနိုင်တယ်။

 $decrypted_data = openssl_decrypt($encrypted_data, "AES-128-ECB", $key);
$unserialized_data = unserialize($decrypted_data);

// output ကို decrypted ဒေတာ
print_r($unserialized_data);

OpenSSL_Decrypt ကို စာဝှက်ဖြည့်စွက်ပြီးနောက်စာဝှက်ထားတဲ့ဒေတာကိုမူလ PHP ဒေတာဖွဲ့စည်းပုံကိုပြန်ယူဖို့ unserialize function ကိုသုံးနိုင်တယ်။

3 ။ သိုလှောင်ထားသောအချက်အလက်များ၏လုံခြုံရေးကိုမည်သို့သေချာအောင်လုပ်ရမည်နည်း။

စာဝှက်ထားတဲ့ဒေတာများကိုသိမ်းဆည်းခြင်းကဒေတာလုံခြုံမှုကိုသေချာစေရန်တစ်ခုတည်းသောအစိတ်အပိုင်းဖြစ်သည်။ လုံခြုံရေးကိုပိုမိုတိုးတက်စေရန်နောက်ထပ်အစီအမံအချို့ပြုလုပ်ရန်လိုအပ်သည်။

1 ။ HTTPS ကိုသုံးပါ

အထိခိုက်မခံသောအချက်အလက်များကိုလွှဲပြောင်းသောအခါ, data ထုတ်ပေးစဉ်အတွင်းကြားဖြတ်နှောင့်ယှက်ခြင်းမရှိသေးသော HTTPS protocol ကိုသေချာစွာအသုံးပြုရန်သေချာပါစေ။

2 ။ အားကောင်းသောစကားဝှက်နှင့်သော့ကိုရွေးချယ်ပါ

စာဝှက်စနစ်အတွက်အသုံးပြုသောသော့သည်ခိုင်မာပြီးလျှို့ဝှက်ထားရမည်။ ရိုးရှင်းသောသို့မဟုတ်အလွယ်တကူမှန်းဆသောသော့များကိုမသုံးပါနှင့်။ ကျပန်းသော့ကိုထုတ်လုပ်ရန် Openssl_random_pseudoudo_bytes ကို သုံးနိုင်သည်။

 $key = bin2hex(openssl_random_pseudo_bytes(16));  // ဖြစ်ပါှးစေ16BYTE key

3 ။ ပုံမှန်ကိုပုံမှန်မွမ်းမံပါ

ပုံမှန်သော့ချက်အစားထိုးခြင်းသည်အကောင်းဆုံးအလေ့အကျင့်တစ်ခုဖြစ်သည်။ သော့ချက်တစ်ခုပေါက်ကြားလျှင်ပင်သော့ချက်လှည့်ခြင်းအားဖြင့်တိုက်ခိုက်သူသည်သက်တမ်းကုန်ဆုံးသောသော့ သုံး. ဒေတာအားလုံးကိုမသုံးနိုင်ပါ။

4 ။ ဒေတာ Access အခွင့်အရေးအခွင့်အရေးထိန်းချုပ်မှု

အခွင့်အာဏာရှိသောအသုံးပြုသူများသို့မဟုတ်ပရိုဂရမ်များသည်အထိခိုက်မခံသောအချက်အလက်များကို 0 င်ရောက်နိုင်ရန်သေချာစေပါ။ သိုလှောင်ထားသောအချက်အလက်များကိုအကန့်အသတ်ဖြင့်ကန့်သတ်ရန် Access Control List (ACL) သို့မဟုတ်အခန်းကဏ် access ကိုစီမံခန့်ခွဲမှုစနစ်ကိုသုံးပါ။

5 ။ PHP အရာဝတ်ထုဆေးထိုးတိုက်ခိုက်မှုတားဆီး

အကယ်. သင်သည် PHP အရာဝတ်ထုများကိုသိုလှောင်နေပါက PHP အရာဝတ်ထုဆေးထိုး (POI) တိုက်ခိုက်မှုများကိုသင်သတိထားရန်သတိထားရမည်။ unerialize သောအခါ, ဖြစ်နိုင်လျှင်မယုံကြည်မှုရင်းမြစ်များမှအချက်အလက်များကိုလုပ်ဆောင်ရန် မအောင်မြင် ပါနှင့်။

User_Classes ကို အသုံးပြုခြင်းအားဖြင့်သင် မတောင်းဆိုသော အတန်းများကိုကန့်သတ်နိုင်သည်။

 $data = unserialize($encrypted_data, ["allowed_classes" => ["YourClass"]]);

6 ။ ဒေတာအရန်ကူးခြင်းနှင့်ပြန်လည်ထူထောင်ရေး

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