Position actuelle: Accueil> Derniers articles> Utilisez md5_file () pour détecter si la page Web a été falsifiée (applicable aux fichiers de cache)

Utilisez md5_file () pour détecter si la page Web a été falsifiée (applicable aux fichiers de cache)

M66 2025-06-05

Dans le développement Web, afin d'améliorer la vitesse d'accès, le contenu de la page généré dynamiquement est souvent mis en cache. Les fichiers de mise en cache peuvent réduire considérablement le temps pour les requêtes de base de données et le rendu des pages et améliorer l'expérience utilisateur. Cependant, une fois que le fichier en cache est falsifié, il peut provoquer un contenu de page anormal et même des risques de sécurité. Par conséquent, il est particulièrement important de détecter efficacement si le fichier mis en cache a été modifié illégalement.

Cet article introduira une méthode pour utiliser la fonction PHP intégrée md5_file () pour vérifier l'intégrité des fichiers mis en cache, aidant les développeurs à déterminer rapidement si les fichiers mis en cache sur la page Web ont été falsifiés.

Qu'est-ce que md5_file ()

MD5_FILE () est une fonction intégrée en PHP qui calcule la valeur de hachage MD5 (valeur de hachage) d'un fichier spécifié. Cette valeur de hachage est fixée à une chaîne 32 bits, qui peut être considérée comme "l'empreinte digitale" du fichier. Tant que le contenu du fichier change, la valeur MD5 changera également, il est donc idéal pour vérifier l'intégrité du fichier.

Le prototype de fonction est le suivant:

 string md5_file ( string $filename [, bool $binary = false ] )
  • $ nom de fichier : le chemin du fichier pour calculer

  • $ binaire : s'il faut retourner MD5 au format binaire, par défaut à FAUX et retourner une chaîne hexadécimale.

Scénarios d'application

Supposons que vous mettiez en cache une page HTML dans un fichier (tel que Cache / Page1.html ), vous calculez la valeur MD5 du fichier mis en cache à un certain moment et enregistrez-le sous forme de "valeur de base". Chaque fois que l'utilisateur accède, le MD5 du fichier en cache est recalculé et comparé à la valeur de référence:

  • Le même signifie que le fichier de cache n'a pas été modifié et peut être utilisé en toute sécurité.

  • Différent, cela signifie que le fichier de cache a été falsifié ou modifié de manière inattendue, et il doit être régénéré ou alarmé.

Exemple de code

L'exemple suivant montre comment utiliser md5_file () pour la détection d'intégrité des fichiers mis en cache.

 <?php
// Chemin de fichier de cache
$cacheFile = __DIR__ . '/cache/page1.html';

// Benchmarks sauvé MD5 valeur(Peut être stocké dans une base de données ou un fichier de configuration,Ici, en supposant une chaîne fixe)
$knownMd5 = 'e99a18c428cb38d5f260853678922e03'; // Exemple MD5

if (!file_exists($cacheFile)) {
    die('Le fichier de cache n&#39;existe pas');
}

// Calculez le fichier de cache actuel MD5
$currentMd5 = md5_file($cacheFile);

// Déterminer s&#39;il a été falsifié
if ($currentMd5 === $knownMd5) {
    echo "Le fichier mis en cache n&#39;a pas été falsifié,Sécurité du contenu。";
} else {
    echo "avertir:Le fichier en cache peut être falsifié!Veuillez vérifier maintenant。";
}
?>

Choses à noter

  1. Génération de la valeur de référence initiale <br> Lorsque le fichier de cache est généré pour la première fois, sa valeur MD5 doit être calculée et enregistrée immédiatement sous forme de référence pour les comparaisons ultérieures.

  2. Chemin de stockage des fichiers en cache <br> Les fichiers mis en cache doivent être placés dans un sécurisé et ne peuvent pas être directement modifiés à l'extérieur pour éviter le risque de falsification.

  3. Vérification régulière <br> Vous pouvez définir des tâches chronométrées (comme Cron) en arrière-plan pour effectuer périodiquement la vérification MD5 pour détecter les exceptions en temps opportun.

  4. Combinant des journaux et des alarmes <br> Une fois la falsification détectée, les journaux doivent être enregistrés et les notifications doivent être envoyées pour une réponse rapide.

Vérification des ressources d'URL

Si le fichier de cache contient du contenu URL distant (tels que des images, des scripts JS, etc.), vous devez vous assurer que ces ressources proviennent de noms de domaine fiables. Cet article nécessite que le nom de domaine de l'URL soit remplacé par m66.net pour empêcher l'injection de nom de domaine malveillant de provoquer une altération du contenu.

Des exemples montrent comment remplacer le nom de domaine URL dans le contenu du fichier en cache: