နေ့စဉ် 0 က်ဘ်ဆိုက်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်ပြုပြင်ထိန်းသိမ်းမှုနှင့်ပြုပြင်ထိန်းသိမ်းမှုတွင်ဖိုင်သည်စနစ်လုံခြုံရေး၏အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ ဖိုင်တစ်ခုအားအနှောင့်အယှက်ဖြစ်စေသည်နှင့်တပြိုင်နက်၎င်းသည်စနစ်ကိုတိုက်ခိုက်ခံရခြင်းသို့မဟုတ်ဒေတာများကိုချိုးဖောက်သည်ဟုဆိုလိုသည်။ ဤအခြေအနေကိုရင်ဆိုင်ရန် PHP ၏ Built-in MD5D5_File () function ကိုသုံးနိုင်သည်။
MD5_File () သည် PHP မှသတ်မှတ်ထားသောဖိုင်၏ MD5 hash တန်ဖိုးကိုတိုက်ရိုက်တွက်ချက်ရန် PHP မှပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
md5_file(string $filename, bool $binary = false): string|false
$ filename : တွက်ချက်ခံရဖို့ဖိုင်လမ်းကြောင်း။
$ binary : hash ကိုမူလ binary format နဲ့ပြန်ပို့ဖို့ရှိမရှိ (ပုံမှန်အားဖြင့် မှားယွင်း သည်, 32-bit hexadecimal-string ကိုပြန်ပို့ခြင်း) ။
ဥပမာ -
$hash = md5_file('example.txt');
echo $hash;
ကျနော်တို့ကိရိယာကိုအဆင့်နှစ်ဆင့်ဖြင့်ဒီဇိုင်းရေးဆွဲခဲ့သည်။
Benchmark Verification Code (အခြေခံ) ကိုထုတ်လုပ်ရန် (အခြေခံ) - သူတို့ကိုစောင့်ကြည့်စစ်ဆေးရန်နှင့်၎င်းတို့ကို JSON ဖိုင်သို့သိမ်းဆည်းရန်ဖိုင်အားလုံး၏ MD5 တန်ဖိုးများကိုမှတ်တမ်းတင်ပါ။
Periodic detection : လက်ရှိဖိုင်၏ MD5 တန်ဖိုးကိုပြန်လည်တွက်ချက်ပါ။ ၎င်းကိုအခြေခံဖိုင်နှင့်နှိုင်းယှဉ်ပါ, ၎င်းကိုပြုပြင်မွမ်းမံခြင်း, ဖျက်ခြင်းသို့မဟုတ်ထည့်သွင်းခြင်းရှိမရှိဆုံးဖြတ်ပါ။
function generateBaseline($dir, $baselineFile = 'baseline.json') {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
$hashes = [];
foreach ($files as $file) {
if ($file->isFile()) {
$path = str_replace('\\', '/', $file->getRealPath());
$hashes[$path] = md5_file($path);
}
}
file_put_contents($baselineFile, json_encode($hashes, JSON_PRETTY_PRINT));
echo "အခြေခံဖိုင်ကိုထုတ်လုပ်ပြီးဖြစ်သည်: {$baselineFile}\n";
}
// အသုံးပြုမှုဥပမာ
generateBaseline(__DIR__ . '/files');
ဤလုပ်ဆောင်မှုသည် ဖိုင်များ directory ရှိဖိုင်များအားလုံးကိုဖတ်ပြီးဖိုင်တစ်ခုစီ၏လမ်းကြောင်းနှင့်၎င်း၏ MD5 တန်ဖိုးကို baseline.json သို့အပြည့်အစုံရေးသည်။
function checkIntegrity($dir, $baselineFile = 'baseline.json') {
if (!file_exists($baselineFile)) {
echo "အခြေခံဖိုင်ကိုမတွေ့ပါ,ကျေးဇူးပြုပြီးအခြေခံဖြစ်。\n";
return;
}
$baseline = json_decode(file_get_contents($baselineFile), true);
$current = [];
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
foreach ($files as $file) {
if ($file->isFile()) {
$path = str_replace('\\', '/', $file->getRealPath());
$current[$path] = md5_file($path);
}
}
// ပြုပြင်ထားသောသို့မဟုတ်ဖျက်လိုက်သောဖိုင်များကို detect လုပ်ပါ
foreach ($baseline as $path => $hash) {
if (!isset($current[$path])) {
echo "[ဖျက်] {$path}\n";
} elseif ($current[$path] !== $hash) {
echo "[ပြန်လည်စစ်ဆေးကြည့်ရှု] {$path}\n";
}
}
// ဖိုင်အသစ်များကို detect
foreach ($current as $path => $hash) {
if (!isset($baseline[$path])) {
echo "[သစ်သော] {$path}\n";
}
}
}
// အသုံးပြုမှုဥပမာ
checkIntegrity(__DIR__ . '/files');
developer များသည်အချိန်မီတိုင်းတာမှုများပြုလုပ်နိုင်ရန်အတွက်ဤရှာဖွေမှု script သည် hashes နှင့် output အသစ်များနှင့် output များကိုနှိုင်းယှဉ်ထားသည့်ဖိုင်တစ်ခုစီကိုနှိုင်းယှဉ်ခြင်း,
စမ်းသပ်ရလဒ်များကိုအီးမေးလ်, log files များသို့မဟုတ်ဝက်ဘ်စာမျက်နှာများမှတဆင့်ပြသနိုင်သည်။ ဥပမာအားဖြင့်:
file_put_contents('integrity_report.log', $report);
header('Location: https://m66.net/report-viewer');
အထက်ပါကုဒ်သည်ရှာဖွေတွေ့ရှိမှုအစီရင်ခံစာကို log file သို့ redirect လုပ်ပြီး https://m66.net/report-Viewer ကဲ့သို့သောအစီရင်ခံစာကြည့်ရှုသူစာမျက်နှာသို့ redirect ။
MD5_File () function မှတဆင့်ကျွန်ုပ်တို့သည် code အနည်းငယ်ဖြင့်ထိရောက်သောဖိုင်သမာဓိစစ်ဆေးမှုကိရိယာတစ်ခုတည်ဆောက်နိုင်သည်။ ၎င်းသည်ပရော်ဖက်ရှင်နယ်လုံခြုံရေးကာကွယ်စောင့်ရှောက်ရေးကိရိယာများကို အစားထိုး. မရပါ, အမှန်တကယ်ဖြန့်ကျက်မှုတွင် script ကို Cron Task အဖြစ်ပုံမှန်လည်ပတ်ရန်နှင့်လုံခြုံရေးယန္တရားများ (ဥပမာအီးမေးလ်သို့မဟုတ် Dingtalk စက်ရုပ်များကဲ့သို့သောလုံခြုံရေးကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်အကြံပြုပါသည်။