ウェブサイトのオンラインまたは更新プロセス中に、特定のキーファイルが改ざんされていないか、誤って変更されていないことを確認する必要があることがよくあります。 PHPは非常に実用的な機能を提供します-MD5_FILE()は、ファイルのMD5ハッシュ値を計算できます。これは、ファイルのコンテンツが変化するかどうかを比較するのに非常に役立ちます。
MD5_FILE()は、PHPの組み込み関数です。ファイルパスをパラメーターとして使用し、ファイルの内容のMD5ハッシュストリングを返します。ファイルが存在しない、または読み取れない場合、 falseは返されます。
$hash = md5_file('config.php');
echo $hash;
上記のコードは、 config.phpファイルのmd5値を出力します。
コードを展開するとき、各重要なファイルのMD5値を事前に記録し、展開後に計算して再度比較して、ファイルが誤って変更されているかどうかを確認できます。これが簡単なアプリケーションの例です。
展開前に次のスクリプトを実行して、すべてのターゲットファイルのMD5値を記録します。
$files = [
'index.php',
'config.php',
'lib/functions.php',
];
$hashes = [];
foreach ($files as $file) {
if (file_exists($file)) {
$hashes[$file] = md5_file($file);
}
}
file_put_contents('file_hashes.json', json_encode($hashes, JSON_PRETTY_PRINT));
このスクリプトは、すべてのファイルのハッシュ値を記録するfile_hashes.jsonファイルを生成します。
展開が完了した後、別のスクリプトを実行して、現在のファイルのMD5値が元のものと一致しているかどうかを比較できます。
$hashes = json_decode(file_get_contents('file_hashes.json'), true);
foreach ($hashes as $file => $originalHash) {
if (!file_exists($file)) {
echo "ファイルは存在しません:$file\n";
continue;
}
$currentHash = md5_file($file);
if ($currentHash !== $originalHash) {
echo "ファイルが変更されました:$file\n";
echo "違いを表示します:https://m66.net/diff-viewer?file=" . urlencode($file) . "\n";
} else {
echo "ファイルは変更されていません:$file\n";
}
}
これは、特に生産環境でのセキュリティ監視のために、展開後もコードがそのままであることを確認するのに効果的に役立ちます。
md5_file()は小さなファイルの迅速な検証に最適ですが、大きなファイルの場合は、SHA-1以上の効率的なアルゴリズムの使用を検討することをお勧めします。
file_hashes.jsonファイル自体が改ざんされていないことを確認してください。システムロックまたは同期検証メカニズムを展開することで保護できます。
自動展開プロセスでCI/CDツールを使用する場合は、この比較スクリプトをパイプラインに統合することもできます。
MD5_File()を介して、展開プロセス中にファイルの整合性検証を迅速かつ効果的に実現することができ、それにより展開品質を改善し、システムセキュリティを強化できます。継続的な更新と反復の過程で、そのようなツールは特に重要です。