Maison  >  Article  >  développement back-end  >  Vulnérabilité de téléchargement de fichiers PHP et ses correctifs

Vulnérabilité de téléchargement de fichiers PHP et ses correctifs

PHPz
PHPzoriginal
2023-08-07 10:01:452451parcourir

Vulnérabilité de téléchargement de fichiers PHP et ses mesures de réparation

Avec le développement d'Internet, la fonction de téléchargement de fichiers devient de plus en plus importante dans le développement de sites Web. Cependant, la fonction de téléchargement de fichiers PHP est également l'une des failles de sécurité courantes. Les pirates peuvent utiliser cette vulnérabilité pour télécharger des fichiers malveillants, puis attaquer le site Web. Cet article présentera les principes et les méthodes d'attaque des vulnérabilités de téléchargement de fichiers PHP et proposera quelques mesures de réparation.

1. Principe de vulnérabilité
Les vulnérabilités de téléchargement de fichiers PHP sont généralement basées sur les deux principes suivants :

  1. Vérification incomplète du type de fichier : le tableau $_FILES en PHP est une variable globale utilisée pour gérer les téléchargements de fichiers. Pendant le processus de téléchargement de fichier, la variable $_FILES contient des informations telles que la taille et le type du fichier. Cependant, les pirates peuvent simuler des demandes de téléchargement pour déguiser des fichiers malveillants en images ou en d'autres types de fichiers dont le téléchargement est autorisé.
  2. Autorisations d'exécution de fichier incorrectes : si le serveur PHP ne définit pas ou ne vérifie pas correctement les autorisations d'exécution du fichier lors de l'enregistrement du fichier téléchargé, les pirates peuvent exécuter du code arbitraire en téléchargeant des fichiers malveillants.

2. Méthode d'attaque

  1. Attaque de contournement du type de fichier : les pirates peuvent contourner la vérification du type de fichier par le serveur en modifiant l'extension du fichier. Par exemple, téléchargez "evil.php" déguisé en "evil.jpg", puis appelez le fichier via d'autres méthodes pour exécuter du code malveillant.
  2. Attaque de course aux threads : les pirates peuvent télécharger plusieurs fichiers en même temps, créant des conditions de concurrence et finalement remplaçant un fichier malveillant par un fichier légitime. De cette façon, le serveur enregistrera par erreur le fichier malveillant et l’exécutera lorsqu’il sera appelé par d’autres pages.

3. Mesures de réparation

Afin d'éviter les vulnérabilités de téléchargement de fichiers PHP, nous pouvons prendre les mesures suivantes :

  1. Définir une liste blanche : pendant le processus de téléchargement de fichiers, une vérification de la liste blanche est effectuée sur le type de fichier, c'est-à-dire seuls les fichiers spécifiés peuvent être téléchargés. Type de fichier. Voici un exemple de code :
$allowedTypes = ['jpg', 'jpeg', 'png'];
$fileExt = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($fileExt, $allowedTypes)) {
    die("File type not allowed.");
}
  1. Stratégie de dénomination de fichier : lors de l'enregistrement des fichiers téléchargés, un nom de fichier généré aléatoirement doit être utilisé, combiné avec le préfixe du nom de fichier, la date et d'autres informations pour identifier de manière unique le fichier téléchargé. Cela empêche les pirates d'accéder directement aux fichiers téléchargés en devinant le nom du fichier.
  2. Limiter la taille du fichier : afin d'empêcher les utilisateurs malveillants de télécharger des fichiers trop volumineux et de provoquer l'épuisement des ressources du serveur, la taille du fichier doit être limitée. Voici un exemple de code :
$maxSize = 1024 * 1024; // 1MB
if ($_FILES['file']['size'] > $maxSize) {
    die("File size exceeds limit.");
}
  1. Vérifier le contenu du fichier : en plus de vérifier l'extension du fichier, le contenu du fichier doit également être vérifié. Vous pouvez utiliser les fonctions intégrées de PHP pour analyser et vérifier les fichiers image afin de garantir que les fichiers téléchargés sont des images valides.
if (exif_imagetype($_FILES['file']['tmp_name']) === false) {
    die("Invalid image file.");
}
  1. Contrôle des autorisations de fichiers : lors de l'enregistrement des fichiers téléchargés, assurez-vous que l'autorisation d'exécution du fichier n'est pas définie sur exécutable. Vous pouvez empêcher les pirates d'exécuter du code malveillant en définissant les autorisations de fichiers en lecture seule ou en bloquant les autorisations d'exécution.

Pour résumer, les vulnérabilités de téléchargement de fichiers PHP sont des risques de sécurité courants, mais en renforçant la vérification du type de fichier, la stratégie de dénomination des fichiers, la limite de taille des fichiers, l'inspection du contenu des fichiers, le contrôle des autorisations de fichiers et d'autres mesures de réparation, nous pouvons prévenir efficacement ces vulnérabilités, et pour assurer la sécurité du site Web et des utilisateurs.

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