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 :

[Sécurité] Sécurité dans un script d'upload


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut [Sécurité] Sécurité dans un script d'upload
    Bonjour à vous !

    Je suis entrain de développer un petit script qui permet de sauvegarder une image uploadé puis d'en créer une miniature, et j'aimerais connaitre vos astuces pour sécuriser ce genre de script

    Mon code ressemble à sa :

    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
    On POST:
       $nomFichier    = $_FILES["img1"]["name"] ;
       $nomTemporaire = $_FILES["img1"]["tmp_name"] ;
       $typeFichier   = $_FILES["img1"]["type"] ;
       $poidsFichier  = round($_FILES["img1"]["size"]/1024) ;
       $extension       = strtolower(array_pop(explode(".", $nomFichier)));
     
    // Vérifications
    if ($extension!="jpg" && $extension!="png" && $extension!="gif") {
         message_redir("------------- ERREUR -------------\\nLe format du fichier n'est pas autorisé.\\nLes extensions valides sont JPG, PNG et GIF !","?p=membre/profil");
    }
    if ($poidsFichier>=1000) {
          message_redir("------------- ERREUR -------------\\nVotre image a une taille supérieure à 1mo \\nVeuillez réduire votre image avant de recommancer","?p=membre/profil");
    }
     
     // On copie la Photo en Grand Format 
    $chemin = ("upload/big/");
    copy($nomTemporaire, $chemin.$nomFichier);
     
     // On cré la miniature à partir de la photo grand format
    $urlimage = "upload/big/".$nomFichier;
    $imgmin = RatioResizeImg($urlimage,120,140,"upload/principal/");
     
    $sql = mysql_query("INSERT INTO `galerie` ( ................ ) VALUES ( ........... )");
    header("location: ?p=membre/profil");
    Mes fonctions utilisées

    J'aimerais savoir ce que vous en pensez, et me donner des conseils pour l'améliorer.

    Merci !

  2. #2
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 277
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 277
    Points : 1 994
    Points
    1 994
    Par défaut
    Pas testé mais cette ligne me semble à revoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $extension       = strtolower(array_pop(explode(".", $nomFichier)));
    Si je t'envoie un fichier test.gif.php cela doit passer
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    Citation Envoyé par BiD0uille
    Pas testé mais cette ligne me semble à revoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $extension       = strtolower(array_pop(explode(".", $nomFichier)));
    Si je t'envoie un fichier test.gif.php cela doit passer
    je crois pas. le array_pop va sortir la derniere extension, soit "php", donc le controle suivant est correct.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je viens de tester et il n'y a pas de pbm de ce coté là !
    Avec test.gif.php, $extension="php" donc l'upload est bloquée.

    array_pop(explode(".", $nomFichier)) sert à ne garder que les lettres aprés le dernier point.

    Edit : Fladnag t'a été plus rapide que moi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Arret d'un script au bout d'une heure
    Par NhyMbuS dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 15/11/2006, 18h11
  2. [Sécurité] Sécurité portable pour les données utilisées dans une requête
    Par berceker united dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/07/2006, 14h48
  3. Réponses: 4
    Dernier message: 13/05/2006, 09h14
  4. Réponses: 3
    Dernier message: 23/02/2006, 08h30
  5. [MySQL] Vérification de l'inexistence d'un fichier dans ma table pour un script d'upload
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/02/2006, 16h35

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