Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2011, 19h54   #1
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Par défaut Contrôler le type MIME d'une image + contrôle de mon code

Salut à tous,

Je me suis basé sur un tuto du site dvp.com pour uploader des images sur mon serveur.

Cela semble bien fonctionner, mais je me demandais si je ne devais pas apporter plus de sécurité sur le contrôle du fichier.

Je vois qu'il est conseillé de contrôle le type MIME, mais je ne trouve pas beaucoup d'informations là dessus.

Spaffey avait posté un message à ce propos il y a quelques années :

http://www.developpez.net/forums/d46...e-mime-upload/

Voici mon code :

Code :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<?php
	$dossier = 'C:\wamp\upload/';
	$fichier = basename($_FILES['myfile']['name']);
	$taille_maxi = 1000000;
	$taille = filesize($_FILES['myfile']['tmp_name']);
	$extensions = array('.png', '.gif', '.jpg', '.jpeg');
	$extension = strrchr($_FILES['myfile']['name'], '.'); 
	//Début des vérifications de sécurité...
	if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
	{
		 $erreur = 'Only these file types are allowed : png, gif, jpg, jpeg';
	}
	if($taille>$taille_maxi)
	{
		 $erreur = 'The file is too big.  Maximum size : 1 Mo';
	}
	if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
	{
		 //On formate le nom du fichier ici...
		 $fichier = strtr($fichier, 
			  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
			  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
		 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
		 if(move_uploaded_file($_FILES['myfile']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
		 {
			  echo 'Successful operation !';
		 }
		 else //Sinon (la fonction renvoie FALSE).
		 {
			  echo 'Error !';
		 }
	}
	else
	{
		 echo $erreur;
	}
?>
Avez-vous des remarques par rapports à ce code ?

Pensez-vous qu'il est préférable d'ajouter des contrôles ? si oui, lesquels ?

Je vous en remercie d'avance.

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 20h29   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
le MIME c'est bidon, et ça n’exige pas vraiment, c'est uniquement la pour dire a ton navigateur ou ton os, avec quoi ouvrir le fichier, c'est la même chose qu'un extension, c'est pas parce que c'est un .jpg que c'est un jpg, le MIME c'est pareil, de plus la plupart des libs de MIME marche uniquement via une correspondance d'extension, la libmagic permet de faire un contrôle un peux plus poussé (mais pas trop quand même), dit toi que c'est une pseudo sécurité supplémentaire, mais que ça mange pas de pain de la faire donc pourquoi pas, utilise fileinfo ou mime_content_type
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 20h48   #3
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Salut,

Merci pour ta réponse.

Citation:
Envoyé par stealth35 Voir le message
le MIME c'est bidon
Je ne suis pas aussi sûr que toi à ce niveau.

Citation:
et ça n’exige pas vraiment
,

Que veux-tu dire par là ?

Citation:
c'est uniquement la pour dire a ton navigateur ou ton os, avec quoi ouvrir le fichier, c'est la même chose qu'un extension,
OK, je ne le savais pas.

Citation:
utilise fileinfo ou mime_content_type
Sur la doc de PHP, on me dit que c'est obsolète

Citation:
mime_content_type — Détecte le type de contenu d'un fichier (obsolète)
On me conseille d'utiliser getimagesize, qu'en penses-tu ?

Encore merci pour l'aide.

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 21h03   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par beegees Voir le message
Je ne suis pas aussi sûr que toi à ce niveau.
c'est comme les extensions, donc bidon

Citation:
Envoyé par beegees Voir le message
Que veux-tu dire par là ?
cf 1ere réponse



Citation:
Envoyé par beegees Voir le message
Sur la doc de PHP, on me dit que c'est obsolète
ça vaut pas le coup d’utiliser cette fonction si t'as fileinfo, si tu la pas utilise la, elle est pas en E_DEPRECATED pour le moment, donc c'est ok


Citation:
Envoyé par beegees Voir le message
On me conseille d'utiliser getimagesize, qu'en penses-tu ?
si c'est que pour des images c'est parfait getimagesize marche un peu comme la libmagic


si tu veux plus d'info :
http://fr.wikipedia.org/wiki/Type_MIME
http://fr.wikipedia.org/wiki/Nombre_...ogrammation%29
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h50.


 
 
 
 
Partenaires

Hébergement Web