Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction md5_file () pour vérifier si le fichier a été modifié lors du déploiement du code?

Comment utiliser la fonction md5_file () pour vérifier si le fichier a été modifié lors du déploiement du code?

M66 2025-06-04

Au cours du processus en ligne ou de mise à jour du site Web, nous devons souvent nous assurer que certains fichiers clés n'ont pas été falsifiés ou modifiés accidentellement. PHP offre une fonction très pratique - md5_file () , qui peut calculer la valeur de hachage MD5 d'un fichier, ce qui est très utile pour comparer si le contenu du fichier change.

Qu'est-ce que md5_file ()?

MD5_FILE () est une fonction intégrée de PHP. Il prend un chemin de fichier en tant que paramètre et renvoie la chaîne de hachage MD5 du contenu du fichier. Si le fichier n'existe pas ou ne peut pas être lu, false sera renvoyé.

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

Le code ci-dessus sortira la valeur MD5 du fichier config.php .

Scénario d'application: déploier la vérification de l'intégrité du fichier

Lors du déploiement du code, nous pouvons enregistrer la valeur MD5 de chaque fichier important à l'avance, calculer et comparer à nouveau après le déploiement pour confirmer si le fichier a été accidentellement modifié. Voici un exemple d'application simple.

Étape 1: générer un fichier de hachage de référence

Nous exécutons le script suivant avant le déploiement pour enregistrer les valeurs MD5 de tous les fichiers cibles.

 $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));

Ce script générera un fichier file_hashes.json , qui enregistre les valeurs de hachage de tous les fichiers.

Étape 2: Vérifiez si le fichier a été modifié après le déploiement

Une fois le déploiement terminé, nous pouvons exécuter un autre script pour comparer si la valeur MD5 du fichier actuel est cohérente avec l'original:

 $hashes = json_decode(file_get_contents('file_hashes.json'), true);

foreach ($hashes as $file => $originalHash) {
    if (!file_exists($file)) {
        echo "Le fichier n'existe pas:$file\n";
        continue;
    }

    $currentHash = md5_file($file);
    if ($currentHash !== $originalHash) {
        echo "Le fichier a été modifié:$file\n";
        echo "Voir la différence:https://m66.net/diff-viewer?file=" . urlencode($file) . "\n";
    } else {
        echo "Fichier non modifié:$file\n";
    }
}

Cela peut nous aider efficacement à confirmer que le code reste intact après le déploiement, en particulier pour la surveillance de la sécurité dans les environnements de production.

Conseils

  • MD5_FILE () est idéal pour une vérification rapide des petits fichiers, mais pour les fichiers volumineux, il est recommandé d'envisager d'utiliser des algorithmes SHA-1 ou plus efficaces.

  • Veuillez vous assurer que le fichier file_hashes.json lui-même n'a pas été falsifié, il peut être protégé par le déploiement de verrouillage du système ou de mécanismes de vérification synchrone.

  • Si vous utilisez des outils CI / CD dans un processus de déploiement automatisé, vous pouvez également intégrer ce script de comparaison dans le pipeline.

Conclusion

Via md5_file () , nous pouvons réaliser rapidement et efficacement la vérification de l'intégrité des fichiers pendant le processus de déploiement, améliorant ainsi la qualité du déploiement et améliorant la sécurité du système. Dans le processus de mises à jour et d'itérations continues, ces outils sont particulièrement importants.