Upload d'avatars sécurisé

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par noren, 17 Mars 2015.

  1. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Salut

    Je cherche à faire un upoad d'avatar le plus sécurisé possible.

    Actuellement je fais ceci :

    - je vérifie que le nom du fichier d'origine ne contient pas "php", "html" ou 2 "." <-- si détecté annule l'upload
    - je renomme le fichier d'origine avec un non codé (md5 ... )
    - je vérifie l'extension de façon basique avec pathinfo
    - je vérifie la taille du fichier
    - je vérifie le mime avec getimagesize mais également avec fileinfo (2 précautions valent mieux qu'une)

    - Une fois ces tests effectués l'image est donc temporairement uploadée dans un répertoire inconnu et bloqué pour les utilisateurs (deny from all)
    - je redimensionne (crop) l'image avec GD

    Ensuite cette image est modérée avant d'être renommé id_membre.(jpg ou png) et déplacé dans le bon dossier public du site et visible de tous.

    Elle sera donc affiché simplement de cette façon : <img src="id_membre.ext" />

    la question qui se pose c’est comment la modérer sans risque d’exécuter un script caché malveillant? et bien vérifier lors de la modération que l'image ne contient aucun script suspect?


    Pour visualiser l'image je peux toujours passer par readfile il me semble exact?
    lireimg.php?nom=image.ext

    mais même si l'image s'affiche correctement rien n’empêche la présence de code malveillant exact? Comment regarder l’intérieur de l’image? la source?

    Si du php ou autre code malvaillant se situe dans l'image peut-il être exécuté lorsqu'on fait ceci : <img src = "imagehack.jpg" />

    ou si on met l'url suivante directement : ndd.ext/images/imagehack.jpg

    je ne sais absolument pas si il y a des techniques de hacks pour y arriver.

    Comment empêcher également que du php soit exécuté dans certains répertoires du site?

    J'ai bien vu ceci : php_flag engine off
    Mais il semblerait que ça ne soit pas très fiable et bien interprété sur tous les hébergements.

    Ah et derniere question comment bloquer les fonctions de type eval etc. via le .htaccess?
     
  2. loubet
    loubet WRInaute impliqué
    Inscrit:
    19 Février 2003
    Messages:
    788
    J'aime reçus:
    0
    procedes à quelques tests :
    - mets de l'html dans un fichier avec extension .html sur ton serveur, et vois s'il est exécuté
    - mets du php dans un fichier toto.php.gif et vois si le php est exécuté
    - desactives le php dans le rep ou se situe ce toto.php.gif et vois si le php est exécuté
    - fait ton crop de toto.php.gif et vois si le code php est présent dans le source généré
    donc en combinant, nommage de l'image + php desactivé + crop de l'image, tu ne prends plus beaucoup de risque.
     
  3. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Le soucis avec les tests, c’est que je ne suis pas hacker, par conséquent je ne connais pas tous les techniques de dissimulation de code dans une image.
    J'en ai fait quelques uns dont ceux que tu cites.

    Le seul vrai test serait surement de vérifier la source de l'image lors de la modération. Comment faire sans risque d'executer le script inclu?

    J'ai également entendu parlé (lu) du null byte , mais je ne sais pas vraiment comment m'en prémunir.
    je fais ceci : preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $file['name']) mais je ne sais pas si c’est suffisant.
    J'imagine donc que des techniques de hacks sont assez nombreuses et que de simple petits tests d'un néophyte ne sera pas suffisant :/

    PS : j’interdis les gif également qui semblent plus facilement modifiables par des hackers.
    PS2 : hormi PHP_FAG engine off exit-il un autre moyen via son htaccess d’interdire toute exécution de script dans un repertoire? (même inclu dans une image)
     
  4. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    701
    J'aime reçus:
    0
    Si du code PHP est exécuté via des fichiers images, c'est que le serveur est nase …
    En principe, le PHP ne doit être interprété que pour les fichiers avec les extensions : phpX, php et phtml.
    En tout cas, certainement pas des GIF, JPG, PNG, etc.
    Pour moi, rien que cette protection suffit (niveau sécurité en tout cas).

    Si quelqu'un met un fichier image invalide, il y aura juste une erreur au moment de l’affichage comme quoi le fichier n'est pas une image valide.
     
  5. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Ok merci ça me rassure
     
Chargement...
Similar Threads - Upload avatars sécurisé Forum Date
sécuriser upload fichier csv.gz Développement d'un site Web ou d'une appli mobile 9 Mars 2022
Fractionner un fichier uploadé (slice/chrunk) Développement d'un site Web ou d'une appli mobile 2 Octobre 2020
Contrat cession droit image upload formulaire de mon site Droit du web (juridique, fiscalité...) 2 Avril 2020
Script upload photo : Retournement d'images Développement d'un site Web ou d'une appli mobile 12 Janvier 2017
problème upload image Développement d'un site Web ou d'une appli mobile 8 Novembre 2016
Upload d'image Droit du web (juridique, fiscalité...) 23 Février 2016
Upload via Ajax et limitation post_max_size (php.ini) Développement d'un site Web ou d'une appli mobile 11 Février 2016
Empêcher l'upload de gros fichiers? Développement d'un site Web ou d'une appli mobile 27 Mai 2015
Migrer un siteweb sans uploader les fichiers Administration d'un site Web 6 Mai 2015
Scanner un fichier sur un upload Administration d'un site Web 4 Septembre 2014
Interface d'administration avec upload images Développement d'un site Web ou d'une appli mobile 22 Août 2014
upload des fichier RAR et ZIP Développement d'un site Web ou d'une appli mobile 13 Janvier 2014
Recherche CMS - Upload/download privé par membre Développement d'un site Web ou d'une appli mobile 22 Octobre 2012
Upload fichiers par user et problématique virus ? Développement d'un site Web ou d'une appli mobile 20 Septembre 2012
Script PHP upload d'images Développement d'un site Web ou d'une appli mobile 24 Juillet 2012
Je cherche à faire un upload multiple d'image automatique depuis un site internet Développement d'un site Web ou d'une appli mobile 16 Avril 2012
Prob sur upload d'une video Développement d'un site Web ou d'une appli mobile 12 Février 2012
Megaupload fermé : où j'héberge mes vidéos maintenant ? Développement d'un site Web ou d'une appli mobile 23 Janvier 2012
Fermeture de MegaUpload et impact pour les webmasters Le café de WebRankInfo 20 Janvier 2012
Packupload.com Demandes d'avis et de conseils sur vos sites 15 Novembre 2011