Sécurité pour upload d'images

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Sécurité pour upload d'images

par Invité » 29 janv. 2007, 17:28

En plus clair.
Si tu as un endroit dans ton site où tu peux uploader des images tu l'utilise pour uploader la tienne dans laquette tu as inséré ton code.

C'est a dire, tu ouvre ton image avec un fichier texte, et tu y insere, au bon endroit. Pour cela tu regarde si ton image est toujours lisible comme image.

Ensuite, il y a des sites, de moins en moins maintenant car ce n'est pas du tout sécurié qui vont lire une page et te l'afficher.
Comme
www.toto.com?page=main.php par exemple...
Et donc a la place du main.php, tu lui mets comme url
www.toto.com?page=adresse de l'image que tu as uploadé sur le serveur.

La plus part du temps, ces sites font un read de la page ciblé par l'url, et apres un écho, ou autre équivalent, dans ce cas; ton script se trouve injecté dans la page :)

Je te laisse imaginé le carnage....
Tu peux lire apres n'importe quelle autre page, faire des requetes sql, rebooté des serveurs, etc...

par Invité » 29 janv. 2007, 17:20

hum, je me souviens d'un copain qui a piraté un site grace à un fichier PHP qu'il a fait passer pour une image...
Je vois vraiment mal comment il pourrait faire si on filtre par extension. Je veux des explications avant d'y croire :langue:
Super simple...

Tu as une page qui te permets d'uploader une image.
Donc tu upload ton image.

Apres si tu a une autre page qui ouvre une autre via l'URL.
genre www.foo.com?page=le_nom_de_ton_image

et bah la, tu peux executer du script :)

par naholyr » 15 sept. 2006, 09:15

hum, je me souviens d'un copain qui a piraté un site grace à un fichier PHP qu'il a fait passer pour une image...
Je vois vraiment mal comment il pourrait faire si on filtre par extension. Je veux des explications avant d'y croire :langue:

par pascaltje » 14 sept. 2006, 17:31

hum, je me souviens d'un copain qui a piraté un site grace à un fichier PHP qu'il a fait passer pour une image...

pour vérifier que le fichier est bien une image, je conseille d'utiliser cette fonction:
http://fr3.php.net/manual/fr/function.getimagesize.php

elle renverra un tableau avec des données sur le fichier image ou FALSE si ce n'est pas une image.

A+

Pascal

par Goulven » 14 sept. 2006, 14:43

Merci les gars !

Je venais juste de poser mon if(){} et de commencer à chercher, un copier-coller et tout marche du premier coup.
Le tableau des codes d'erreur et la syntaxe au même endroit, c'est parfait.

Merci encore !

par drick » 01 août 2006, 10:44

Arrêter toi donc à imagecreatefrom*, si elle n'échoue pas tu as une image valide et tu n'as donc pas besoin d'aller plus loin dans ta vérification.
J'ai mis une image truqué php dans la fonction imagecreatefromgif() et il l'ouvre.. ce n'est donc pas le bon moyen :-/

par naholyr » 27 juil. 2006, 17:35

Sauf que ça dépend du fichier... Tout n'est pas avantageusement convertible en JPG. Essaie de convertir le logo PHPFrance (en ignorant la transparence hein, c'est encore un autre détail) en JPG, tu vas voir les lettres qui bavent, ou bien le poids qui augmente par rapport au GIF/PNG.

Typiquement : GIF, PNG, BMP -> PNG, et JPG -> JPG
Car ces formats n'ont pas le même objectif.

Ton objectif était de vérifier que le fichier uploadé est bien une image et pas un script déguisé ? Arrêter toi donc à imagecreatefrom*, si elle n'échoue pas tu as une image valide et tu n'as donc pas besoin d'aller plus loin dans ta vérification.

par drick » 27 juil. 2006, 15:37

C'est bon j'ai trouvé comme un grand =)

on ouvre le fichier uploadé selon son extension :

Code : Tout sélectionner

imagecreatefromgif($file); //ouvre un fichier gif imagecreatefromjpeg($file); //ouvre un fichier jpeg imagecreatefrompng($file); //ouvre un fichier png imagecreatefromwbmp($file); //ouvre un fichier wbmp
et on l'enregistre dans un nouveau format (jpeg ici) :

Code : Tout sélectionner

$rep = 'images/'; imagejpeg($image, $rep);
C'est bien ça ??

par drick » 27 juil. 2006, 15:26

ok, ca peut etre une bonne solution..
J'ai regardé le manuel sur les images en PHP http://www.php.net/manual/fr/ref.image.php
mais a part png2wbmp() et jpeg2wbmp() je n'ai pas trouvé comment convertir jpg,bmp,png en jpg ?
Merci

par DocType » 25 juil. 2006, 21:16

Et si le fichier est un png, on lui rajoute un jpg ce qui le rend illisible ? :D
non mais avec un check file[photo][type] et un check MIME ca devrait aller..
apres on peux peut etre chmod la photo pour la rendre lisible mais pas executable comme ca si il y a upload de php il sera lisible mais pas executable ?
le mieux serait de la convertir dans un format donné (gif png et jpg accepté, mais au final le fichier est un jpg)

par drick » 25 juil. 2006, 16:33

Et si le fichier est un png, on lui rajoute un jpg ce qui le rend illisible ? :D
non mais avec un check file[photo][type] et un check MIME ca devrait aller..
apres on peux peut etre chmod la photo pour la rendre lisible mais pas executable comme ca si il y a upload de php il sera lisible mais pas executable ?

par DocType » 25 juil. 2006, 14:18

de toute facon, la meilleure facon c de mettre .jpg comme extension...
même si c'est un script php, il ne pourra pas l'éxecuter, sauf si c uploadé en .php :wink:

par drick » 24 juil. 2006, 16:54

oui mais pour des images ca ne doit pas poser de problemes ?
En plus il est possible de modifier le type MIME d'un fichier donc ce n'est encore pas la meilleure solution !
Si des experts passent dans le coin..

par starkeus » 24 juil. 2006, 16:40

Oui alors je tiens à apporter ma contribution... je ne pense vraiment pas que l'on puisse faire confiance au type MIME des fichiers uploadés car il dépend apparemment du poste client. J'ai eu ce genre de problème pour des fichiers Excel et CSV...selon l'os (Win Xp ou 98...) j'avais des types différents... Alors ce que je dis n'est pas parole d'évangile. Peut être que des experts peuvent nous éclaircir et nuançer mes propos pessimistes :D

par momox » 24 juil. 2006, 16:34