Maison >développement back-end >tutoriel php >Solution complète aux vulnérabilités PHP (9) - Vulnérabilité de téléchargement de fichiers

Solution complète aux vulnérabilités PHP (9) - Vulnérabilité de téléchargement de fichiers

黄舟
黄舟original
2016-12-22 09:47:541793parcourir

Veuillez indiquer la source de la réimpression : Solution complète de vulnérabilité PHP (9) - Vulnérabilité de téléchargement de fichiers

Un ensemble d'applications Web fournit généralement une fonction de téléchargement de fichiers pour permettre aux visiteurs de télécharger certains fichiers.

Ce qui suit est un simple formulaire de téléchargement de fichier



form>

fichier de configuration php php.ini, l'option upload_max_filesize spécifie la taille du fichier autorisé à être téléchargé, la valeur par défaut est 2M

Variable de tableau $_FILES


PHP utilise la variable $_FILES pour télécharger des fichiers. $_FILES est un tableau. Si vous téléchargez test.txt, alors le contenu du tableau $_FILES est :

$FILES

Array

{

[file] => ; Array

{

[nom] => test.txt //Nom du fichier
[type] => text/plain //Type MIME
[tmp_name] => php5D.tmp //Fichier temporaire
[erreur] => 0 //Message d'erreur
[taille] => 536 //Taille du fichier en octets
}
}
Si vous télécharger un fichier La valeur de l'attribut de nom du bouton est file




Ensuite, utilisez $_FILES['file ']['name '] pour obtenir le nom du fichier téléchargé par le client, à l'exclusion du chemin. Utilisez $_FILES['file']['tmp_name'] pour obtenir le chemin du fichier temporaire où le serveur enregistre le fichier téléchargé

Le dossier dans lequel le fichier téléchargé est stocké

PHP ne le fera pas directement stocker le fichier téléchargé dans le répertoire racine du site Web, mais enregistré en tant que fichier temporaire dont le nom est la valeur de $_FILES['file']['tmp_name']. Le développeur doit copier ce fichier temporaire dans le dossier du site Web stocké.


La valeur de $_FILES['file']['tmp_name'] est définie par PHP et est différente du nom d'origine du fichier. Les développeurs doivent utiliser $_FILES['file']['name'. ] Obtenez le nom d'origine du fichier téléchargé.

Informations d'erreur lors du téléchargement de fichiers

La variable $_FILES['file']['error'] est utilisée pour enregistrer les informations d'erreur lors du téléchargement de fichiers. Sa valeur est la suivante :


Vulnérabilité de téléchargement de fichiers

Si vous fournissez aux visiteurs d'un site Web la fonction de télécharger des images, vous devez faire attention à ce que ce que le visiteur télécharge ne soit pas réellement une image, mais un programme PHP. qui peut être précisé. Si le répertoire où sont stockées les images est un dossier ouvert, l'intrus peut exécuter à distance le fichier PHP téléchargé pour mener l'attaque.

Ce qui suit est un exemple simple de téléchargement de fichiers :




php
// Définissez le répertoire de téléchargement des fichiers
$uploaddir = "D : /www/images/";
// Vérifier si le fichier existe
if (isset($_FILES['file1']))
{
// Le chemin complet à placer dans le répertoire du site Web, y compris le nom du fichier
$uploadfile = $uploaddir . $_FILES['file1']['name']
// Déplacez le chemin stocké sur le serveur vers le vrai nom du fichier
. move_uploaded_file($_FILES[ 'file1']['tmp_name'], $uploadfile);
}
?>
……




form>


Cet exemple n'a pas de suffixe de vérification de fichier, vous pouvez télécharger n'importe quel fichier et la vulnérabilité de téléchargement est évidente

Ce qui précède est l'explication complète des vulnérabilités PHP (9) - le contenu des vulnérabilités de téléchargement de fichiers. Pour en savoir plus. contenu associé, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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