IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Contrôler le type MIME d'une image + contrôle de mon code


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Contrôler le type MIME d'une image + contrôle de mon code
    Salut à tous,

    Je me suis basé sur un tuto du site dvp.com pour uploader des images sur mon serveur.

    Cela semble bien fonctionner, mais je me demandais si je ne devais pas apporter plus de sécurité sur le contrôle du fichier.

    Je vois qu'il est conseillé de contrôle le type MIME, mais je ne trouve pas beaucoup d'informations là dessus.

    Spaffey avait posté un message à ce propos il y a quelques années :

    http://www.developpez.net/forums/d46...e-mime-upload/

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    	$dossier = 'C:\wamp\upload/';
    	$fichier = basename($_FILES['myfile']['name']);
    	$taille_maxi = 1000000;
    	$taille = filesize($_FILES['myfile']['tmp_name']);
    	$extensions = array('.png', '.gif', '.jpg', '.jpeg');
    	$extension = strrchr($_FILES['myfile']['name'], '.'); 
    	//Début des vérifications de sécurité...
    	if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    	{
    		 $erreur = 'Only these file types are allowed : png, gif, jpg, jpeg';
    	}
    	if($taille>$taille_maxi)
    	{
    		 $erreur = 'The file is too big.  Maximum size : 1 Mo';
    	}
    	if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    	{
    		 //On formate le nom du fichier ici...
    		 $fichier = strtr($fichier, 
    			  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    			  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    		 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
    		 if(move_uploaded_file($_FILES['myfile']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    		 {
    			  echo 'Successful operation !';
    		 }
    		 else //Sinon (la fonction renvoie FALSE).
    		 {
    			  echo 'Error !';
    		 }
    	}
    	else
    	{
    		 echo $erreur;
    	}
    ?>
    Avez-vous des remarques par rapports à ce code ?

    Pensez-vous qu'il est préférable d'ajouter des contrôles ? si oui, lesquels ?

    Je vous en remercie d'avance.

    beegees

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    le MIME c'est bidon, et ça n’exige pas vraiment, c'est uniquement la pour dire a ton navigateur ou ton os, avec quoi ouvrir le fichier, c'est la même chose qu'un extension, c'est pas parce que c'est un .jpg que c'est un jpg, le MIME c'est pareil, de plus la plupart des libs de MIME marche uniquement via une correspondance d'extension, la libmagic permet de faire un contrôle un peux plus poussé (mais pas trop quand même), dit toi que c'est une pseudo sécurité supplémentaire, mais que ça mange pas de pain de la faire donc pourquoi pas, utilise fileinfo ou mime_content_type

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    Merci pour ta réponse.

    Citation Envoyé par stealth35 Voir le message
    le MIME c'est bidon
    Je ne suis pas aussi sûr que toi à ce niveau.

    et ça n’exige pas vraiment
    ,

    Que veux-tu dire par là ?

    c'est uniquement la pour dire a ton navigateur ou ton os, avec quoi ouvrir le fichier, c'est la même chose qu'un extension,
    OK, je ne le savais pas.

    utilise fileinfo ou mime_content_type
    Sur la doc de PHP, on me dit que c'est obsolète

    mime_content_type — Détecte le type de contenu d'un fichier (obsolète)
    On me conseille d'utiliser getimagesize, qu'en penses-tu ?

    Encore merci pour l'aide.

    beegees

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par beegees Voir le message
    Je ne suis pas aussi sûr que toi à ce niveau.
    c'est comme les extensions, donc bidon

    Citation Envoyé par beegees Voir le message
    Que veux-tu dire par là ?
    cf 1ere réponse



    Citation Envoyé par beegees Voir le message
    Sur la doc de PHP, on me dit que c'est obsolète
    ça vaut pas le coup d’utiliser cette fonction si t'as fileinfo, si tu la pas utilise la, elle est pas en E_DEPRECATED pour le moment, donc c'est ok


    Citation Envoyé par beegees Voir le message
    On me conseille d'utiliser getimagesize, qu'en penses-tu ?
    si c'est que pour des images c'est parfait getimagesize marche un peu comme la libmagic


    si tu veux plus d'info :
    http://fr.wikipedia.org/wiki/Type_MIME
    http://fr.wikipedia.org/wiki/Nombre_...ogrammation%29

Discussions similaires

  1. [Débutant] Control de type bouton avec une image
    Par leboeuf dans le forum Windows Presentation Foundation
    Réponses: 21
    Dernier message: 01/10/2013, 01h04
  2. type mime d'une URL
    Par j.david dans le forum Langage
    Réponses: 1
    Dernier message: 05/08/2012, 20h17
  3. Histogramme d'une image BMP - Où mon code cloche-t-il?
    Par Killerboy dans le forum Débuter
    Réponses: 4
    Dernier message: 15/07/2009, 17h53
  4. placer une image à droite de mon texte
    Par criscaro dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 05/12/2006, 15h56
  5. Création d'une image à partir de son code binaire
    Par thefaycal dans le forum ASP
    Réponses: 11
    Dernier message: 18/05/2006, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo