Pour les commentaires je pensais plus aux personnes qui utilisent un I.D.E. pour avoir l'autocompletion d'active. Mais aussi pour le dev', lorsque on laisse de côté un code pendant quelques temps de pouvoir le modifié sans trop se casser la tête.
J'ai mis dans ma classe les type-mime les plus courants, à chacun d'adapter cette liste selon ses besoins et c'est d'ailleurs pour cela que j'ai également fourni une liste de type-mime. Une fois que cela est fait, la déclaration se fait en une seule ligne, pour chaque upload.
$upload->setType("jpg/doc/xls");
Pour ce qui est des commentaires, j'ai commenté l'exemple d'utilisation. Les gens qui veulent utiliser cette classe peuvent me poser toutes les questions qu'ils veulent au besoin.
Je n'aurais pas fait la vérification du type-mime comme cela. Tout est codé en dur dans votre classe, admettons que je veuille envoyé un .rar et que je ne veux pas ajouter de ligne de code dans la class. Comment faire ?
Je mettrais en paramètre lors de l'instanciation de la class un tableau de type-mime autorisés puis de boucler sur ce tableau pour vérifier si le fichier est autorisé. C'est un peu plus souple et évolutif je pense que tout en "dur".
Voilà, j'ai fait la vérification également sur le type-mime.
Cependant, effectivement, comme le disait si bien inwebo, le type-mine n'est pas fiable.
Exemple: j'ai renommé un fichier xls en .jpg, et le type-mime retourné était bien "application/vnd.ms-excel"... Le fichier a été uploadé (meme invalide mais uploadé quand meme).
J'ai fais des recherches sur le net et je ne vois pas de solutions fiable à adapter de manière native.
Si vous avez une solution à donner je suis preneur.
Si il n'y a que le traitement de l'extension, on peut facilement injecter du code dans le commentaire de l'image, et l'exécuter sur le serveur du genre image.gif%00 (dans le path bien sur), donc après, il faut protéger l'url ...
Autant faire en sorte que le script d'upload soit le plus sécurisé possible pour simplifiez le code dans son utilisation.
La vérification du type de fichier ne devrait fait PAS se faire sur son extension ! Même le type-mime n'est pas sûr à 100%, mais c'est une meilleur solution que l'extension.
Penses-tu alors que la vérification de l'extension du fichier faite comme je l'ai fais peut avoir une faille de sécurité?
Je peux rajouter dans l'expression régulière des fichiers strictements interdits par exemple? (lol le flemmard)
Sinon je modifie tout ca ce soir et fournirai une vérif sur le type/mime.
'je sais qu'il ne prend pas toutes les extensions(ex: CSV - XLS ??) ' ?
Les mime-types sont normés.
C'est peut être prendre le problème à l'envers que de développer pour l'exception et ensuite de fixer les problèmes.
En ce qui concerne le pjpeg, qui est un mime-type inconnu à part chez microsoft, je te conseil la lecture (en anglais) de : http://www.evolve.co.nz/how-to-fix-a-pjpeg-image-upload-error.html , le 'p' serait pour 'protected'jpeg et non pas progressive, noté le conditionnel, si vous avez d'autre infos je suis à l'écoute.
Oui, tu as tout à fait raison sur l'utilisation du type mime. J'ai hésité à l'employer mais je sais qu'il ne prend pas toutes les extensions(ex: CSV - XLS ??) et pour les images, IE prend le type pjpeg et pgif (ajout du "p" devant).
C'est pour moi trop bizarre donc je n'ai pas utilisé ca. 8)
Après un rapide survol de cette class, il y a un point qui pourrait être amélioré le test sur l'extension du fichier. Un test sur le mime-type plutôt que sur l'extension du fichier serait plus approprié, voir $_FILES['userfile']['type'].
J'ai également fait une petite class qui réponds au même besoin, mais j'ai rajouté un test pour comparer les poids (en o) du fichier à envoyé et du fichier reçu.
16 mai 2010 à 17:11
12 mai 2010 à 13:48
++
12 mai 2010 à 12:10
$upload->setType("jpg/doc/xls");
Pour ce qui est des commentaires, j'ai commenté l'exemple d'utilisation. Les gens qui veulent utiliser cette classe peuvent me poser toutes les questions qu'ils veulent au besoin.
12 mai 2010 à 10:53
Je n'aurais pas fait la vérification du type-mime comme cela. Tout est codé en dur dans votre classe, admettons que je veuille envoyé un .rar et que je ne veux pas ajouter de ligne de code dans la class. Comment faire ?
Je mettrais en paramètre lors de l'instanciation de la class un tableau de type-mime autorisés puis de boucler sur ce tableau pour vérifier si le fichier est autorisé. C'est un peu plus souple et évolutif je pense que tout en "dur".
Deuxième chose, il faudrait commenter également votre code : j'utilise pour référence la documentation du zendframwork http://framework.zend.com/manual/fr/coding-standard.html
Cordialement
11 mai 2010 à 14:55
http://fr.selfhtml.org/divers/typesmime.htm
11 mai 2010 à 14:53
Cependant, effectivement, comme le disait si bien inwebo, le type-mine n'est pas fiable.
Exemple: j'ai renommé un fichier xls en .jpg, et le type-mime retourné était bien "application/vnd.ms-excel"... Le fichier a été uploadé (meme invalide mais uploadé quand meme).
J'ai fais des recherches sur le net et je ne vois pas de solutions fiable à adapter de manière native.
Si vous avez une solution à donner je suis preneur.
11 mai 2010 à 14:03
11 mai 2010 à 12:47
Autant faire en sorte que le script d'upload soit le plus sécurisé possible pour simplifiez le code dans son utilisation.
11 mai 2010 à 10:31
10 mai 2010 à 15:29
Je peux rajouter dans l'expression régulière des fichiers strictements interdits par exemple? (lol le flemmard)
Sinon je modifie tout ca ce soir et fournirai une vérif sur le type/mime.
Merci pour tes infos.
10 mai 2010 à 15:07
Les mime-types sont normés.
C'est peut être prendre le problème à l'envers que de développer pour l'exception et ensuite de fixer les problèmes.
En ce qui concerne le pjpeg, qui est un mime-type inconnu à part chez microsoft, je te conseil la lecture (en anglais) de : http://www.evolve.co.nz/how-to-fix-a-pjpeg-image-upload-error.html , le 'p' serait pour 'protected'jpeg et non pas progressive, noté le conditionnel, si vous avez d'autre infos je suis à l'écoute.
10 mai 2010 à 14:52
C'est pour moi trop bizarre donc je n'ai pas utilisé ca. 8)
10 mai 2010 à 14:35
Après un rapide survol de cette class, il y a un point qui pourrait être amélioré le test sur l'extension du fichier. Un test sur le mime-type plutôt que sur l'extension du fichier serait plus approprié, voir $_FILES['userfile']['type'].
J'ai également fait une petite class qui réponds au même besoin, mais j'ai rajouté un test pour comparer les poids (en o) du fichier à envoyé et du fichier reçu.
Voilà bonne continuation.
++