|
Publicité | ||||||||||||||||||||||
|
|
#1 | ||||||
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 92 ![]() |
Bonjour,
J'ai crée en PHP un système d'upload d'images. Pour des raisons de sécurité, j'ai décidé de refuser toutes les images dont les 1ers octets (numéro magique) ne correspondent pas à une image jpeg ou gif. Seulement cette protection ne suffit pas : En effet, un fichier peut débuter avec le numéro magique d'un gif (et sera donc accepté), puis peut être suivi de code malicieux comme du PHP... Pour éviter ce problème, j'ai procédé comme cela: - Les fichiers uploadés sont stockés en dehors du répertoire web (donc pas accessible directement) - J'ai crée un fichier image.php?name=image_name , dont voici une version simplifiée: Code :
Code :
J'aimerai ensuite créer des miniatures. J'aimerai savoir si le code suivant protége aussi contre une telle faille : Code :
Autre petite question: De telles protection empecherait par exemple l'éxécution de code PHP. Mais est-ce pareil pour du code JS? (faille XSS). Si non, comment protéger? Merci d'avance pour vos réponses. |
||||||
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() Développeur Web Inscription : janvier 2007 Messages : 438 ![]() |
Pour ne pas te poser de soucis après coup, il faut verrouiller ton système à l'upload. Quand tu reçois un fichier, vérifier plutôt le mime-type afin qu'il soit en accord avec l'extension.
Exemple, j'ai un fichier PHP, je le renomme en .gif, l'upload fonctionne mais si j'appelle l'URL du fichier gif, ton serveur renvoie une entête image/gif : l'image ne s'affiche pas, le code ne s'exécute pas. On obtiens le Mime-type ainsi : $_FILES['mon_fichier']['type'] En gros : Code php :
__________________
Mon blog |
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : août 2007 Messages : 92 ![]() |
Merci pour votre réponse.
Par contre, par simple curiosité avez-vous la réponse aux questions? Quand vous dites d'utiliser la variable $_FILES['mon_fichier']['type'], je ne trouve pas très sécurisé car cette variable n'est pas forcement correcte (facile à changer par le client) |
|
|
00
|
|
|
#4 | ||||
|
Membre du Club
![]() Inscription : novembre 2006 Messages : 84 ![]() |
Effectivement il ne faut absolument pas se fier au type MIME ($_FILES['mon_fichier']['type']) que l'on peut fausser vis a vis du vrai contenu du fichier !
Par contre j'ai trouvé un site pas mal qui se pose les mêmes problématiques de sécurité d'upload et download de fichiers en évitant les injections PHP. A ce que j'en ai compris, l'idéal est de configurer Apache de la sorte : Code :
Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com