PHP Development တွင် Serialize () function ကိုဒေတာအဆောက်အအုံများ (ဥပမာအားဖြင့် Array သို့မဟုတ် Objects ကဲ့သို့) သိုလှောင်ခြင်းသို့မဟုတ်ထုတ်လွှင့်ရန်အတွက်ကြိုးများအဖြစ်ပြောင်းလဲရန်အသုံးပြုလေ့ရှိသည်။ သို့သော်ဖိုင်တင်ခြင်းနှင့် တွဲဖက်. အသုံးပြုသောအခါ, ဤဆောင်းပါးသည် Serialize ကိုမည်သို့အသုံးပြုရမည်ကိုမည်သို့အသုံးပြုရမည်ကိုဆွေးနွေးပါမည်။
PHP ၏ serialize () function သည် PHP တန်ဖိုးများကို (ဥပမာ array များ, အရာဝတ်ထုများစသဖြင့်) အဖြစ်သို့ပြောင်းလဲခြင်းသို့မဟုတ်လွှဲပြောင်းနိုင်သော string format များသို့ပြောင်းလဲပေးသည်။ ဥပမာအားဖြင့်:
$data = ['username' => 'admin', 'password' => '12345'];
$serialized_data = serialize($data);
echo $serialized_data;
output ကိုဖြစ်လိမ့်မည်:
a:2:{s:8:"username";s:5:"admin";s:8:"password";s:5:"12345";}
အတော်လေး, unserialize () string output ကို serialize () ကို php တန်ဖိုးများသို့ပြောင်းလဲရန်အသုံးပြုသည်။ ဖိုင်တင်ခြင်းလုပ်ငန်းစဉ်အတွင်းကျွန်ုပ်တို့သည်ဖိုင်များကိုဖိုင်မှတ်တမ်းတစ်ခု၏ဖိုင်တစ်ခု၏ဖိုင်ကိုသိမ်းဆည်းထားလေ့ရှိသည် ။
အသုံးပြုသူများသည်ဖိုင်များကို တင်. သက်ဆိုင်ရာသတင်းအချက်အလက်များကိုသိမ်းဆည်းခြင်း မှလွဲ. သက်ဆိုင်ရာသတင်းအချက်အလက်များကိုသိမ်းဆည်းနိုင်သည့်ဆိုပါစို့ ။ ရိုးရှင်းသောဖိုင်တင်ခြင်းကုဒ်များသည်အောက်ပါအတိုင်းဖြစ်နိုင်သည် -
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$file = $_FILES['file'];
$file_data = [
'filename' => $file['name'],
'filetype' => $file['type'],
'filesize' => $file['size'],
'filetmp' => $file['tmp_name']
];
// အသုံးပြု serialize() ဖိုင်အချက်အလက်များကိုသိုလှောင်ပါ
$serialized_data = serialize($file_data);
file_put_contents('uploads/file_info.txt', $serialized_data);
}
Deserialization (I.E. မဖော်ပြထားသော () ) သည်အန္တရာယ်များကိုဆွတ်ခူးနိုင်ပြီးအထူးသဖြင့်တိုက်ခိုက်သူတစ် ဦး သည် descrifice code deption သို့မဟုတ် deforce deality ကိုထိခိုက်နိုင်သော description deality ကိုလုပ်ဆောင်နိုင်သည့် desteralized data ကိုကိုင်တွယ်နိုင်သည့်အခါတွင်အချို့သောအန္တရာယ်များကိုဖြစ်ပေါ်စေသည်။ ဥပမာအားဖြင့်တိုက်ခိုက်သူသည်အန္တရာယ်ရှိသော php အရာဝတ်ထုများသို့မဟုတ် code ပါ 0 င်သောဂရုတစိုက်ဆောက်လုပ်ထားသော serialized ဒေတာများကိုတင်နိုင်သည်။
deserialization ၏လုံခြုံရေးကိုသေချာစေရန်အတွက်အကောင်းဆုံးသောအလေ့အကျင့်အနည်းငယ်သာရှိသည်။
အထိခိုက်မခံသောသတင်းအချက်အလက်များကို (ဥပမာစကားဝှက်များ, API သော့များစသဖြင့်) ကိုမခေါ်ပါနှင့် ။ ဤအချက်အလက်ကိုအမြဲတမ်းစာဝှက်ထားတဲ့ပုံစံဖြင့်သိမ်းထားသင့်သည်။
ဖိုင်များကိုတင်သည့်အခါအန္တရာယ်ရှိသည့်ဖိုင်များကိုတင်ခြင်းမှရှောင်ရှားရန်ဖိုင်အမျိုးအစားနှင့်ဖိုင်အရွယ်အစားကိုသေချာစစ်ဆေးပါ။ ဖိုင်အမျိုးအစားနှင့်အရွယ်အစားကိုဆုံးဖြတ်ရန် $ _files ['file'] ကိုသုံးနိုင်သည်။ ဖိုင်အမျိုးအစားနှင့်အရွယ်အစားကိုဆုံးဖြတ်ရန် $ _files ['file'] ကို သုံးနိုင်သည်။
if ($file['size'] > 5000000) {
echo "ဖိုင်ကြီးကြီး";
exit;
}
$allowed_types = ['image/jpeg', 'image/png'];
if (!in_array($file['type'], $allowed_types)) {
echo "မထောက်ခံဖိုင်အမျိုးအစားများ";
exit;
}
PHP သည်သင့်အားအရာဝတ်ထုများကိုစွန့်ခွာသောအခါအရာဝတ်ထုများကိုဖန်တီးရန်ခွင့်ပြုသည်။ အကယ်. အတန်းကိုကန့်သတ်မထားပါကတိုက်ခိုက်သူသည်အန္တရာယ်ရှိသောအရာဝတ်ထုတစ်ခုတွင်သွားနိုင်သည်, ၎င်းသည်အန္တရာယ်ရှိသောကုဒ်ကွပ်မျက်မှုကိုဖြစ်ပေါ်စေနိုင်သည်။ ခွင့်ပြုထားသော tarameter နာကိုသတ်မှတ်ခြင်းဖြင့်အန္တရာယ်ရှိသောအတန်းများကို deserialization ကိုသင်တားဆီးနိုင်သည်။
$data = file_get_contents('uploads/file_info.txt');
$file_data = unserialize($data, ["allowed_classes" => false]); // မည်သည့်အရာဝတ်ထုဖန်တီးမှုကိုပိတ်ထားပါ
ဤရွေ့ကားပြောင်းရွှေ့မှုသည်တိုက်ခိုက်သူများအား deserialization အားနည်းချက်များကို အသုံးပြု. အန္တရာယ်ရှိတဲ့ကုဒ်ကိုအကောင်အထည်ဖော်နိုင်သည်။
တင်ထားသောဒေတာများ၏သမာဓိကိုသေချာစေရန်, တင်ထားသောဖိုင်အချက်အလက်များကိုအတည်ပြုရန် MD5 ကဲ့သို့သော MD5, Sha256 ကဲ့သို့သော MD5, Sha256 ကဲ့သို့သော MD5, Sha256 ကဲ့သို့သော MD5, Sha256 ကဲ့သို့သော) ကိုသင်အသုံးပြုနိုင်သည်။ ဖိုင်တစ်ခုတင်လိုက်သောအခါ hash ကိုထုတ်လုပ်ပြီးအမှန်တကယ်ဖိုင်၏ hash နှင့်နှိုင်းယှဉ်လျှင်,
$uploaded_hash = hash_file('sha256', $file['tmp_name']);
$stored_hash = file_get_contents('uploads/file_hash.txt');
if ($uploaded_hash !== $stored_hash) {
echo "ဖိုင်အကြောင်းအရာနှင့်အတူ tampered ခဲ့တာဖြစ်ပါတယ်";
exit;
}
ဖိုင်တင်ခြင်းကိုယ်တိုင်ကတိုက်ခိုက်မှုများအတွက်အဝင်ဝဖြစ်လာနိုင်သည်။ အန္တရာယ်ရှိသောဖိုင်တင်ခြင်းကိုကာကွယ်ရန်ဖိုင်အမျိုးအစားနှင့်အရွယ်အစားကိုအတည်ပြုရန်အပြင်အသုံးပြုသူများကို Executable PHP ဖိုင်များကိုတင်ခြင်းမှကာကွယ်ရန်ဆောင်ရွက်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်, ဖော့ဖ် နှင့် .exe ကဲ့သို့သောဖိုင်အမျိုးအစားများကိုတင်ခြင်းကိုတားမြစ်သည်သို့မဟုတ်တင်ထားသောဖိုင်များကိုမကွပ်မျက်ခံရသောလမ်းညွှန်များသို့သိမ်းဆည်းထားသည်။
$disallowed_extensions = ['php', 'exe'];
$file_extension = pathinfo($file['name'], PATHINFO_EXTENSION);
if (in_array(strtolower($file_extension), $disallowed_extensions)) {
echo "ဤဖိုင်အမျိုးအစားကိုတားမြစ်သည်";
exit;
}
ဖိုင်များနှင့်အချက်အလက်များကိုလုံခြုံသောနေရာတွင်သိုလှောင်ထားပြီးတင်ထားသောဖိုင်များကိုစနစ်တကျအထီးကျန်ပြီးကာကွယ်ထားသည်။ ဖိုင်ဒေတာတစ်ခုလုံး၏ Serialization ရလဒ်များကိုသိမ်းဆည်းမည့်အစား, ဖိုင်တွဲများ,
Serialize () function ကိုဖိုင်တင်ခြင်းလုပ်ဆောင်ချက်နှင့်ပေါင်းစပ်သောအခါလုံခြုံရေးပြ issues နာများကိုသင်ဂရုပြုရမည်။ deserialization တိုက်ခိုက်မှုများ, ဖိုင်အမျိုးအစားနှင့်အရွယ်အစားစိစစ်အတည်ပြုခြင်းကဲ့သို့သောအချက်များ, ဖိုင်သိုလှောင်မှုနည်းလမ်းများ, ဖိုင်သိုလှောင်မှုနည်းလမ်းများစသည်တို့သည်ဖွံ့ဖြိုးရေးလုပ်ငန်းစဉ်အတွင်းတင်းကျပ်သောဒီဇိုင်းနှင့်ကာကွယ်မှုလိုအပ်သည်။ အကောင်းဆုံးအလေ့အကျင့်များကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဖိုင်တင်ခြင်းလုံခြုံရေးကိုသေချာစေနိုင်သဖြင့်အန္တရာယ်ရှိသောသုံးစွဲသူများအားအားနည်းချက်များကိုအမြတ်ထုတ်ရန်တားဆီးနိုင်သည်။
အထက်ဖော်ပြပါအချက်များသည် PHP တွင် Serialize () function ကိုလုံခြုံစွာအသုံးပြုခြင်းနှင့်ဖိုင်တင်ခြင်းဖြင့်ပေါင်းစပ်ရန်အကောင်းဆုံးအလေ့အကျင့်ဖြစ်သည်။ သင့်တွင်မေးခွန်းများရှိပါကအခမဲ့မေးမြန်းပါ။