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 :

upload file, extentions autorisées


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut upload file, extentions autorisées
    Bonjour

    j'ai fait un formulaire dans le quel je peux uploader un fichier
    ensuite dans le traitement de ce formulaire et donc de ce fichier

    j’aimerais autorisé plusieurs type de fichier genre :
    png, gif, jpg, jpeg, txt ou doc, exel...

    y a t'il des extensions a éviter en terme de sécu
    et enfin y a t'il une liste toute faite des extensions les plus classiques, qu'il est possible de rencontrer car je ne les connais surement pas toutes

    merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tout dépend du but de ton formulaire : par exemple, si tu gères une galerie photos, il faut te limiter aux extensions d'images.
    A noter : les extensions ne sont pas la panacée pour la vérification. Rien n'empêche ton utilisateur de renommer son fichier .Exe en .jpg avant de l'uploader.

  3. #3
    Membre du Club
    Homme Profil pro
    au
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : au
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Points : 52
    Points
    52
    Par défaut
    Pour moi les extensions à éviter sont : php, aspx, asp, html....

    Si les fichiers uploadé sont directement affiché sur le site, il faudrait même interdire les extensions ZIP, RAR....etc car y a des petits malin qui mettent des virus dedans.

    en tout les cas ça dépendras de ce que tu veux faire, comme une galerie de photo ou tu autorisera seulement les extensions d'images.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Pour les fichier, le mieux est d'utiliser une white list d'extensions autorisées plutôt qu'une black list d'extensions interdites.

    Ce qui peut se faire très simplement avec:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Extensions disponibles
    $exts = array('jpg', 'jpeg', 'png', 'gif');
     
    $parts = explode('.', $filename);
    $ext = array_shift($parts);
    if (!in_array(strtolower($ext), $exts))
      echo "Extension $ext non autorisée !";

    On peut aussi utiliser les regexp (à voir qui est le plus rapide):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $exts = array('jpeg', 'png', 'gif', 'jpg');
     
    if (!preg_match('~\.('.implode('|',$exts).')$~i', $filename))
      echo "Fichier invalide !";

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 243
    Points
    20 243
    Par défaut
    Attention, comme le dit celira se baser uniquement sur le nom du fichier pour vérifier l'extension n'est pas suffisant dans un environnement à risque (upload public).

    Il faut en plus vérifier le type mime du fichier pour s'assurer que l'extension corresponde au fichier (un type applicatif avec une extension jpg c'est louche par exemple).

    Pour ça il existe fileinfo , intégré à php depuis la 5.3 ou pour les versions plus anciennes il y'a mime_magic

    un exemple avec fileinfo : http://blog.pascal-martin.fr/post/ph...tions-fichiers

    Il est important d'être très rigoureux sur les uploads de fichier car ça devient vite la catastrophe si il sont exploités.

Discussions similaires

  1. [Upload] file Upload: mettre un fichier sur le serveur
    Par eseb777 dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2007, 10h01
  2. Upload File Javascript
    Par DrE44 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/01/2007, 15h40
  3. [Upload] file upload preload
    Par taffMan dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2006, 21h13
  4. [Upload] Changer les autorisations d'accès
    Par tarzanjane dans le forum Langage
    Réponses: 1
    Dernier message: 25/07/2006, 09h18
  5. Réponses: 2
    Dernier message: 09/02/2006, 18h20

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