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 ကိုယ်နှိုက်သည်စာဝှက်ခြင်းယန္တရားကိုမပေးနိုင်ပါ,
ထုတ်လွှင့်ခြင်းသို့မဟုတ်သိုလှောင်မှုအတွင်းသိုလှောင်ထားသည့်အချက်အလက်များ၏လုံခြုံရေးကိုသေချာစေရန် Serialize string ကိုစာဝှက်ရန်လိုအပ်သည်။ ဘုံစာဝှက်စနစ်နည်းလမ်းများအချိုးကျ encryption နှင့်အချိုးမညီစာဝှက်စနစ်များပါဝင်သည်။ PHP တွင်အချက်အလက်များကိုစာဝှက်ရန် Opensl_encrypt , Sodium_Crypto_secretbox စသည့် encryption faction များကိုသုံးနိုင်သည်။
သိုလှောင်မှုအပေါ် အခြေခံ. သိုလှောင်မှုကိုစာဝှက်ရန်မည်သို့ စာဝှက် ရမည်ဆိုလျှင်နမူနာကုဒ်ဖြစ်သည်။
$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 နည်းလမ်းများကိုရွေးချယ်နိုင်သည်။ ) စာဝှက်ပြီးတဲ့နောက်ဒေတာကိုမဖတ်နိုင်တဲ့ဖြစ်လာလိမ့်မယ်။
သိုလှောင်ထားသည့်စာဝှက်ထားတဲ့ဒေတာကိုသုံးဖို့လိုတဲ့အခါ 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 ကိုသုံးနိုင်တယ်။
စာဝှက်ထားတဲ့ဒေတာများကိုသိမ်းဆည်းခြင်းကဒေတာလုံခြုံမှုကိုသေချာစေရန်တစ်ခုတည်းသောအစိတ်အပိုင်းဖြစ်သည်။ လုံခြုံရေးကိုပိုမိုတိုးတက်စေရန်နောက်ထပ်အစီအမံအချို့ပြုလုပ်ရန်လိုအပ်သည်။
အထိခိုက်မခံသောအချက်အလက်များကိုလွှဲပြောင်းသောအခါ, data ထုတ်ပေးစဉ်အတွင်းကြားဖြတ်နှောင့်ယှက်ခြင်းမရှိသေးသော HTTPS protocol ကိုသေချာစွာအသုံးပြုရန်သေချာပါစေ။
စာဝှက်စနစ်အတွက်အသုံးပြုသောသော့သည်ခိုင်မာပြီးလျှို့ဝှက်ထားရမည်။ ရိုးရှင်းသောသို့မဟုတ်အလွယ်တကူမှန်းဆသောသော့များကိုမသုံးပါနှင့်။ ကျပန်းသော့ကိုထုတ်လုပ်ရန် Openssl_random_pseudoudo_bytes ကို သုံးနိုင်သည်။
$key = bin2hex(openssl_random_pseudo_bytes(16)); // ဖြစ်ပါှးစေ16BYTE key
ပုံမှန်သော့ချက်အစားထိုးခြင်းသည်အကောင်းဆုံးအလေ့အကျင့်တစ်ခုဖြစ်သည်။ သော့ချက်တစ်ခုပေါက်ကြားလျှင်ပင်သော့ချက်လှည့်ခြင်းအားဖြင့်တိုက်ခိုက်သူသည်သက်တမ်းကုန်ဆုံးသောသော့ သုံး. ဒေတာအားလုံးကိုမသုံးနိုင်ပါ။
အခွင့်အာဏာရှိသောအသုံးပြုသူများသို့မဟုတ်ပရိုဂရမ်များသည်အထိခိုက်မခံသောအချက်အလက်များကို 0 င်ရောက်နိုင်ရန်သေချာစေပါ။ သိုလှောင်ထားသောအချက်အလက်များကိုအကန့်အသတ်ဖြင့်ကန့်သတ်ရန် Access Control List (ACL) သို့မဟုတ်အခန်းကဏ် access ကိုစီမံခန့်ခွဲမှုစနစ်ကိုသုံးပါ။
အကယ်. သင်သည် PHP အရာဝတ်ထုများကိုသိုလှောင်နေပါက PHP အရာဝတ်ထုဆေးထိုး (POI) တိုက်ခိုက်မှုများကိုသင်သတိထားရန်သတိထားရမည်။ unerialize သောအခါ, ဖြစ်နိုင်လျှင်မယုံကြည်မှုရင်းမြစ်များမှအချက်အလက်များကိုလုပ်ဆောင်ရန် မအောင်မြင် ပါနှင့်။
User_Classes ကို အသုံးပြုခြင်းအားဖြင့်သင် မတောင်းဆိုသော အတန်းများကိုကန့်သတ်နိုင်သည်။
$data = unserialize($encrypted_data, ["allowed_classes" => ["YourClass"]]);
အထိခိုက်မခံသောအချက်အလက်များသည်လုံခြုံစိတ်ချရသောအရံသိမ်းဆည်းမှုရှိပြီးအရန်ကူးသူကိုစာဝှက်ထားရမည်ကိုသေချာစေပါ။ ဒေတာဆုံးရှုံးမှုကိုရှောင်ရှားရန်အရန်ကူးခြင်း၏ထိရောက်မှုနှင့်လုံခြုံရေးကိုပုံမှန်စစ်ဆေးပါ။