現在の位置: ホーム> 最新記事一覧> コード展開中にMD5_FILE()を使用してファイルの一貫性を確認する方法

コード展開中にMD5_FILE()を使用してファイルの一貫性を確認する方法

M66 2025-06-04

ウェブサイトのオンラインまたは更新プロセス中に、特定のキーファイルが改ざんされていないか、誤って変更されていないことを確認する必要があることがよくあります。 PHPは非常に実用的な機能を提供します-MD5_FILE()は、ファイルのMD5ハッシュ値を計算できます。これは、ファイルのコンテンツが変化するかどうかを比較するのに非常に役立ちます。

md5_file()とは何ですか?

MD5_FILE()は、PHPの組み込み関数です。ファイルパスをパラメーターとして使用し、ファイルの内容のMD5ハッシュストリングを返します。ファイルが存在しない、または読み取れない場合、 falseは返されます。

 $hash = md5_file('config.php');
echo $hash;

上記のコードは、 config.phpファイルのmd5値を出力します。

アプリケーションシナリオ:ファイルの整合性の確認を展開します

コードを展開するとき、各重要なファイルのMD5値を事前に記録し、展開後に計算して再度比較して、ファイルが誤って変更されているかどうかを確認できます。これが簡単なアプリケーションの例です。

ステップ1:ベンチマークハッシュファイルを生成します

展開前に次のスクリプトを実行して、すべてのターゲットファイルの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ファイルを生成します。

ステップ2:展開後にファイルが変更されたかどうかを確認します

展開が完了した後、別のスクリプトを実行して、現在のファイルの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()を介して、展開プロセス中にファイルの整合性検証を迅速かつ効果的に実現することができ、それにより展開品質を改善し、システムセキュリティを強化できます。継続的な更新と反復の過程で、そのようなツールは特に重要です。