Maison >développement back-end >tutoriel php >Comment puis-je vérifier en toute sécurité les types de fichiers image téléchargés en PHP ?

Comment puis-je vérifier en toute sécurité les types de fichiers image téléchargés en PHP ?

DDD
DDDoriginal
2024-11-30 19:05:12501parcourir

How Can I Securely Verify Uploaded Image File Types in PHP?

Vérification du type de fichier de débogage en PHP

Malgré l'utilisation d'une approche courante pour valider les types de fichiers image, certains utilisateurs ont rencontré des erreurs lors du processus de téléchargement.

L'extrait de code fourni utilise la propriété $_FILES['fupload']['type'] fournie par l'utilisateur, qui est susceptible d'être manipulée par des logiciels malveillants. utilisateurs. Pour résoudre cette vulnérabilité, il a été suggéré que l'utilisation de mime_content_type() améliorerait la précision.

Résoudre le problème

Cependant, la solution recommandée consiste à éviter de s'appuyer entièrement sur des valeurs définies par l'utilisateur. Au lieu de cela, il est conseillé d'effectuer votre propre vérification de type.

Pour les images, la fonction exif_imagetype() offre une méthode fiable pour déterminer le véritable format du fichier :

$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']);
$error = !in_array($detectedType, $allowedTypes);

Cette approche vérifie le directement la signature binaire de l'image, éliminant ainsi la possibilité pour les utilisateurs de manipuler le type de fichier.

Alternativement, pour une vérification plus avancée du type de fichier, envisagez d'utiliser les fonctions finfo si votre le serveur les prend en charge.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn