Sécurité pour upload d'images

ViPHP
ViPHP | 1024 Messages

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

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

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:

Invité
Invité n'ayant pas de compte PHPfrance

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 :)

Invité
Invité n'ayant pas de compte PHPfrance

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...