Lors du développement de projets PHP, les fichiers de configuration stockent généralement des données importantes telles que les informations de connexion de la base de données, les clés d'API, etc. Une fois que le fichier de configuration est falsifié par du personnel non autorisé, il peut entraîner des risques de sécurité, des violations de données ou des anomalies de programme. Par conséquent, il est particulièrement important de détecter rapidement si le fichier de configuration a été falsifié.
Cet article présentera comment utiliser la fonction intégrée PHP md5_file () pour détecter l'intégrité du fichier de configuration, afin de déterminer s'il a été secrètement modifié.
MD5_FILE () est une fonction fournie par PHP pour calculer la valeur de hachage MD5 (hachage) d'un fichier spécifié. MD5 est une fonction de hachage largement utilisée dont la sortie est une chaîne hexadécimale à 32 caractères.
En utilisant la valeur MD5 du fichier, nous pouvons comparer si le MD5 précédemment enregistré est cohérent avec le fichier actuel MD5, puis déterminer si le fichier a été modifié.
Phase d'initialisation : lorsque le fichier de configuration est normal et sûr, calculez d'abord la valeur MD5 du fichier de configuration et enregistrez-le, comme l'écriture sur un fichier spécial ou une base de données.
Phase de détection : chaque fois que le programme s'exécute, recalculez la valeur MD5 du fichier de configuration et comparez-le avec la valeur précédemment enregistrée.
Résultats Jugement :
Si MD5 est cohérent, le fichier de configuration n'a pas été modifié.
Si MD5 est incohérent, cela signifie que le fichier de configuration peut être falsifié et qu'une alarme est requise ou que le traitement correspondant est requis.
En supposant que le chemin du fichier de configuration est config.php , nous pouvons utiliser le code suivant pour implémenter la détection:
<?php
// Chemin de fichier de configuration
$configFile = __DIR__ . '/config.php';
// Enregistrer les profils de sécurité connusMD5valeur(En fait, il peut être lu à partir d'une base de données ou d'un fichier)
$knownMd5 = 'e99a18c428cb38d5f260853678922e03'; // 示例valeur,请替换为实际valeur
// Calculez le fichier de configuration actuelMD5
$currentMd5 = md5_file($configFile);
if ($currentMd5 === false) {
echo "Impossible de lire le fichier de configuration!";
exit;
}
// contrasteMD5valeur
if ($currentMd5 === $knownMd5) {
echo "Le fichier de configuration n'a pas été modifié,MD5Vérification a été adoptée。";
} else {
echo "avertir!Le fichier de configuration a été modifié,MD5Échec de la vérification!";
// Vous pouvez écrire un journal ici,Envoyer des e-mails ou d'autres alarmes
}
?>
Vous pouvez d'abord exécuter md5_file () lors du déploiement du projet et obtenir la valeur MD5 initiale et l'enregistrer.
Dans cet exemple, $ KnownMD5 est codé en dur directement et il est recommandé de l'écrire dans un stockage sécurisé (comme une base de données ou un fichier sécurisé) dans le projet réel.
Si le chemin du fichier de configuration change, vous devez synchroniser le chemin d'accès dans le code.
Vous pouvez écrire un script temporaire et l'exécuter une fois pour obtenir la valeur MD5 du fichier de configuration:
<?php
echo md5_file(__DIR__ . '/config.php');
?>
Enregistrez la chaîne de sortie comme norme pour la comparaison ultérieure.
Détection chronométrée : utilisez des tâches planifiées (telles que Linux Crontab) pour exécuter régulièrement des scripts de détection pour détecter la falsification en temps opportun.
Combiné avec des journaux : après avoir découvert que le fichier a été modifié, enregistrez les informations pertinentes (temps, IP, etc.) pour une enquête facile.
Détection multi-fichiers : Si le projet dispose de plusieurs fichiers de configuration importants, ils peuvent être enregistrés en lots dans une détection de tableau et de boucle.
PHP Document officiel: MD5_FILE ()