1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2012
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Upload un fichier - Script sécurisé ?

    Bonjour,

    j'ai lu le tuto sur le site pour faire un système d'upload, mais je n'ai pas vraiment l'impression qu'il soit très sécurisé...
    Je trouve les vérifications très simple pouvez vous me dire ce que vous en pensez svp ?

    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
     
    <?php
    function upload($fichier, $destination, $maxsize=false, $extensions=false)
    {
    	//Test1: fichier correctement uploadé
    	if(!isset($_FILES[$fichier]) || $_FILES[$fichier]['error'] > 0) return false;
    	//Test2: taille limite 1mo = 1048576
    	if($maxsize !== false && $_FILES[$fichier]['size'] > $maxsize) return false;
    	//Test3: extension
    	$ext = strtolower(substr(strrchr($_FILES[$fichier]['name'], '.'), 1));
    	if($extensions !== false && !in_array($ext, $extensions)) return false;
    	//Déplacement
    	$nom = BASEPATH."/".$destination."/".sha1(uniqid(rand(), true)).".".$extension_upload;
    	return move_uploaded_file($_FILES[$fichier]['tmp_name'], $nom);
    }
     
    $upload1 = upload('fichier', 'images/upload', 1048576, array('png','gif','jpg','jpeg'));
    Je voudrais intégrer ce script sur une page accessible aux membres donc, je veux vraiment le sécurisé avant

    Cordialement,
    Cam022.

  2. #2
    Expert éminent

    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2010
    Messages
    3 861
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2010
    Messages : 3 861
    Points : 7 042
    Points
    7 042

    Par défaut

    Il y a cette classe d'upload qui est plus sécurisée concernant le contrôle des images, elle gère beaucoup plus d'erreurs que cette fonction et possède de nombreuses options qu'il est facile de mettre en place en cas de besoin (redimensionnement, nommage et renommage de fichiers, upload multiple etc.).
    Il n'y aurait que 4 lignes à écrire pour la configurer dans ton cas.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Dév. Web / Android
    Inscrit en
    août 2003
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Dév. Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 3 846
    Points : 9 518
    Points
    9 518

    Par défaut

    Pour protéger à coup sur un upload d'image il faut retraiter le fichier après l'upload avec GD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $img = imagecreatefrompng('justuploaded.png'); 
    imagepng($img, 'safe.png');
    Si le code précédent échoue : ce n'était pas une image => on supprimer le fichier potentiellement dangereux.

    Une protection par vérification d'extension est inefficace.
    Une protection via le type mime fourni par HTTP est contournable
    Une protection via le type mime retourné par fileinfo est un premier point intéressant

    un peu de lecture : https://www.owasp.org/index.php/Unre...ed_File_Upload
    Pry Framework php5

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2012
    Messages : 2
    Points : 3
    Points
    3

    Par défaut

    Par contre je n'utilise pas seulement les images mais aussi les PDF, .doc, etc...

  5. #5
    Expert éminent

    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2010
    Messages
    3 861
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2010
    Messages : 3 861
    Points : 7 042
    Points
    7 042

    Par défaut

    Ben alors vérifie au moins l'extension. C'est le minimum.

    Un fichier malveillant dont on a changé l'extension est potentiellement dangereux mais normalement pas directement. Cela dit c'est une menace sérieuse.

    Si fileinfo fonctionne sur ton serveur, utilises cette fonction. C'est la méthode la plus aboutie actuellement disponible.

Discussions similaires

  1. [Upload] script pour uploader un fichier
    Par koKoTis dans le forum Fichiers
    Réponses: 2
    Dernier message: 12/02/2008, 09h31
  2. Réponses: 2
    Dernier message: 14/08/2007, 15h20
  3. exécution d'un script d'upload de fichier coté client
    Par cyril911 dans le forum Scripts
    Réponses: 4
    Dernier message: 02/04/2007, 18h38
  4. [Upload] script d'upload de fichiers
    Par zais_ethael dans le forum Fichiers
    Réponses: 5
    Dernier message: 27/09/2006, 23h48
  5. [Upload] Upload de fichier avec un script PHP
    Par largolgd dans le forum Fichiers
    Réponses: 7
    Dernier message: 23/04/2006, 15h21

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