Dans le développement Web, le téléchargement de fichiers est très courant, mais avec la vérification de l'intégrité et de la sécurité des fichiers. Pour s'assurer que le fichier téléchargé n'a pas été falsifié ou corrompu, PHP fournit la fonction md5_file () , qui peut calculer la valeur de hachage MD5 du fichier, réalisant ainsi la vérification de l'intégrité.
Cet article introduira en détail comment utiliser la fonction md5_file () pour vérifier l'intégrité côté serveur des fichiers téléchargés et expliquer sa méthode d'application en combinaison avec des exemples de code PHP réels.
MD5_FILE () est une fonction intégrée en PHP qui calcule la valeur de hachage MD5 d'un fichier spécifié. MD5 est un algorithme de hachage largement utilisé qui mappe les données de toute longueur dans une chaîne de 32 bits à longueur fixe. En comparant si les valeurs MD5 des fichiers avant et après le téléchargement sont cohérentes, nous pouvons déterminer si les fichiers ont changé.
Prototype de fonction:
string md5_file ( string $filename [, bool $raw_output = false ] )
$ nom de fichier : le chemin de fichier qui doit être calculé pour les valeurs MD5.
$ raw_output : si défini sur true , renvoyez le digest MD5 dans le format binaire d'origine. Par défaut, False renvoie une chaîne hexadécimale 32 bits.
L'utilisateur télécharge le fichier sur le serveur via le formulaire.
Le serveur enregistre temporairement le fichier téléchargé.
Le serveur appelle md5_file () pour calculer la valeur MD5 du fichier.
Comparez la valeur MD5 avec la valeur MD5 attendue dans le client ou la base de données.
Déterminez si le fichier est terminé.
Voici un exemple complet de téléchargement de fichiers et de vérification d'intégrité:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_FILES['uploaded_file']) && $_FILES['uploaded_file']['error'] == UPLOAD_ERR_OK) {
// Chemin temporaire pour télécharger des fichiers
$tmpFilePath = $_FILES['uploaded_file']['tmp_name'];
// Target de sauvegarde(Peut être modifié en fonction des exigences)
$destination = __DIR__ . '/uploads/' . basename($_FILES['uploaded_file']['name']);
// Fichiers de téléchargement mobile dans le répertoire cible
if (move_uploaded_file($tmpFilePath, $destination)) {
// Calculez le fichier téléchargéMD5valeur
$md5Hash = md5_file($destination);
// En supposant que la base frontale ou la base de données connaît le fichier à l'avanceMD5valeur(这里举例为固定valeur)
$expectedMd5 = 'd41d8cd98f00b204e9800998ecf8427e'; // ExempleMD5
// Vérifiez l'intégrité du fichier
if ($md5Hash === $expectedMd5) {
echo "Télécharger le fichier avec succès,Et la vérification de l'intégrité du fichier est passé!";
} else {
echo "Télécharger le fichier avec succès,Mais la vérification de l'intégrité du fichier a échoué!";
}
} else {
echo "L'échec de l'échec des fichiers a échoué!";
}
} else {
echo "Pas de fichiers de téléchargement ou d'erreurs de téléchargement!";
}
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">Sélectionner le téléchargement de fichiers:</label>
<input type="file" name="uploaded_file" id="file" />
<button type="submit">Télécharger</button>
</form>
Sécurité : lors du téléchargement de fichiers, vous devez contrôler strictement le type et la taille pour empêcher les fichiers malveillants d'être téléchargés.
Collision MD5 : l'algorithme MD5 présente un risque de collision. Si les exigences de sécurité sont extrêmement élevées, envisagez d'utiliser une fonction de hachage plus sûre, comme Sha256_File () .
Autorisations de chemin de fichier : assurez-vous que le répertoire de téléchargement a des autorisations d'écriture et n'est pas accessible directement via l'URL pour éviter les fuites.
Valeur MD5 du client : Si le client fournit une valeur MD5 de fichier, il doit être transmis via des canaux sécurisés pour empêcher la falsification.
L'utilisation de la fonction md5_file () pour vérifier l'intégrité des fichiers téléchargés est un moyen simple et efficace de déterminer rapidement si le fichier a été falsifié ou téléchargé de manière incorrecte. Combiné avec d'autres mesures de sécurité dans le processus de téléchargement, il peut améliorer la fiabilité et la sécurité du traitement des fichiers.