Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction MD5_FILE () de PHP pour surveiller et détecter si les ressources statiques du site Web ont été falsifiées?

Comment utiliser la fonction MD5_FILE () de PHP pour surveiller et détecter si les ressources statiques du site Web ont été falsifiées?

M66 2025-06-23

Dans le développement et la maintenance du site Web, l'intégrité des ressources statiques (telles que CSS, les fichiers JavaScript, les images, etc.) est cruciale pour assurer la sécurité et l'expérience utilisateur du site Web. Cependant, les ressources statiques peuvent parfois être falsifiées de façon malicieusement, ce qui fait que les utilisateurs chargent un contenu anormal et provoquent même des risques de sécurité. Cet article présentera comment utiliser la fonction MD5_FILE () intégrée de PHP pour surveiller et détecter rapidement si les ressources statiques du site Web ont été falsifiées.

Quelle est la fonction md5_file ()?

MD5_FILE () est une fonction en PHP pour calculer la valeur de hachage MD5 d'un fichier. Il accepte un paramètre de chemin de fichier, renvoyant une chaîne hexadécimale 32 bits du contenu du fichier. En comparant la valeur MD5 du fichier, vous pouvez rapidement déterminer si le contenu du fichier a changé.

Scénarios d'application

  • Une fois le site Web en ligne, il scanne régulièrement pour que les ressources statiques soient falsifiées.

  • Comparez les fichiers de version et confirmez l'intégrité du fichier de déploiement.

  • Surveillez la sécurité des fichiers de bibliothèque tiers.

Idée de base

  1. Calculez et enregistrez d'abord une valeur MD5 initiale sur le fichier de ressource statique.

  2. Traverser régulièrement ces fichiers et recalculer la valeur MD5.

  3. Comparez les dernières valeurs MD5 avec celles précédemment enregistrées.

  4. Si les valeurs MD5 sont incohérentes, le fichier a été modifié ou falsifié.

Exemple de code

L'exemple suivant montre comment utiliser PHP pour utiliser la fonction md5_file () pour surveiller si les ressources statiques dans un répertoire spécifié ont été falsifiées.

 <?php
// Répertoire de surveillance
$directory = __DIR__ . '/static';

// garderMD5Fichier de valeur(Le format de stockage est json)
$md5RecordFile = __DIR__ . '/md5_records.json';

// Lire l&#39;histoireMD5Enregistrer
$oldMd5Records = file_exists($md5RecordFile) ? json_decode(file_get_contents($md5RecordFile), true) : [];

// Obtenez tous les fichiers statiques dans le répertoire
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$changedFiles = [];
$newMd5Records = [];

foreach ($files as $file) {
    if ($file->isFile()) {
        $filePath = $file->getPathname();
        // Calculez le fichier actuelMD5valeur
        $md5 = md5_file($filePath);

        // Enregistrer当前MD5
        $relativePath = str_replace($directory . DIRECTORY_SEPARATOR, '', $filePath);
        $newMd5Records[$relativePath] = $md5;

        // Plus vieuxMD5Avec nouveauMD5
        if (!isset($oldMd5Records[$relativePath]) || $oldMd5Records[$relativePath] !== $md5) {
            $changedFiles[] = $relativePath;
        }
    }
}

// Résultats de détection de sortie
if (count($changedFiles) > 0) {
    echo "Les fichiers suivants ont été modifiés ou ajoutés:\n";
    foreach ($changedFiles as $changedFile) {
        echo "- " . $changedFile . "\n";
    }
} else {
    echo "Tous les fichiers n&#39;ont pas changé。\n";
}

// garder最新MD5Enregistrer
file_put_contents($md5RecordFile, json_encode($newMd5Records, JSON_PRETTY_PRINT));
?>

illustrer:

  • Le répertoire statique est un répertoire qui stocke les ressources statiques, et vous pouvez ajuster le chemin en fonction du projet réel.

  • Fichier d'enregistrement MD5 MD5_RECORDS.json est utilisé pour enregistrer la valeur MD5 de chaque fichier pour des comparaisons plus faciles.

  • Ce script publie une liste de fichiers qui ont changé ou ajouté.

  • Vous pouvez définir ce script sur une tâche chronométrée (comme Cron sous Linux) pour obtenir une surveillance automatisée.

Expansion supplémentaire

  1. Alarme automatique <br> Lorsqu'un fichier est détecté pour être modifié, l'administrateur peut être informé par e-mail ou par SMS pour faire face aux risques potentiels en temps opportun.

  2. Gestion de la liste blanche <br> Pour certains documents qui changent fréquemment mais n'affectent pas la sécurité, créez une liste blanche pour éviter les fausses alarmes.

  3. Algorithme de hachage cryptographique plus fort <br> Si les exigences de sécurité sont plus élevées, vous pouvez utiliser hash_file ('sha256', $ filepath) au lieu de md5_file () .

  4. Combiné avec le système de contrôle de version <br> Utilisez des outils tels que GIT pour gérer les ressources statiques et combinez md5_file () pour assurer la sécurité des fichiers.

Résumer

L'utilisation de la fonction MD5_FILE () de PHP pour surveiller et détecter les ressources statiques sur les sites Web est une méthode simple et efficace. Il peut aider les développeurs à découvrir le risque que les fichiers soient falsifiés en temps opportun et d'assurer l'intégrité et la sécurité du contenu du site Web. En coopération avec les scripts automatisés et les mécanismes d'alarme, l'efficacité de la maintenance de la sécurité du site Web peut être considérablement améliorée.