le 03/08/2008 à 16:21
Sammuel
Salut,
J'essaie de rendre mon formulaire d'upload le plus sécurisé que possible, mais au final je me rends compte, que cela ne sert pas à grand chose ^^
Contenu du fichier test ".php.gif" :
J'ai lu qu'il fallait utiliser getimagesize() pour tester le fichier envoyer. Ok, mais si on envoie un fichier du type ".php.gif", le type mime retourné, sera "image/gif".
De plus, si je teste le fichier ".php.gif" :
Donc, pour le serveur, il s'agira bien d'un fichier image de type GIF.
J'ai donc 2 solutions :
* Première solution :
Tester si il est possible de redimensionner l'image ? Dans le cas du fichier ".php.gif", Imagick me retourne une erreur du type :
Donc je pourrais bloquer tous les fichiers qui ne sont pas susceptibles d'être redimensionnés au moment de la création des vignettes ?
* Deuxième solution :
Vérifier que le nom du fichier soumis ne comporte pas plus de 1 "." :
Si le fichier s'appelle "blalblalbalbal.gif", ca passe.
Si le fichier s'appelle "balblalbal.php.gif", je bloque.
Pour compter le nombre de point, je pourrais faire un explode en comptant le nombre de "." contenu dans le nom temporaire du fichier.
Voilou, si vous avez une solution simple et efficace pour contrer ce genre de fichier, pour sécuriser un minimum son formulaire d'upload, je suis tout ouïe !
J'essaie de rendre mon formulaire d'upload le plus sécurisé que possible, mais au final je me rends compte, que cela ne sert pas à grand chose ^^
Contenu du fichier test ".php.gif" :
GIF89a<?php system($_GET['cmd']); ?>
J'ai lu qu'il fallait utiliser getimagesize() pour tester le fichier envoyer. Ok, mais si on envoie un fichier du type ".php.gif", le type mime retourné, sera "image/gif".
$imageinfo = getimagesize($_FILES['userfile']['tmp_name']);
echo $imageinfo['mime'];
Retourne => image/gif
De plus, si je teste le fichier ".php.gif" :
if($imageinfo==FALSE)echo "False<br/>\n";else echo "True<br />\n";
list($width, $height, $type)=$imageinfo;
echo "width=$width, height=$height, type=$type";
Retourne :
True
width=16188, height=26736, type=1
Donc, pour le serveur, il s'agira bien d'un fichier image de type GIF.
J'ai donc 2 solutions :
* Première solution :
Tester si il est possible de redimensionner l'image ? Dans le cas du fichier ".php.gif", Imagick me retourne une erreur du type :
Fatal error: Uncaught exception 'ImagickException' with message 'Negative or zero image size `
Donc je pourrais bloquer tous les fichiers qui ne sont pas susceptibles d'être redimensionnés au moment de la création des vignettes ?
* Deuxième solution :
Vérifier que le nom du fichier soumis ne comporte pas plus de 1 "." :
Si le fichier s'appelle "blalblalbalbal.gif", ca passe.
Si le fichier s'appelle "balblalbal.php.gif", je bloque.
Pour compter le nombre de point, je pourrais faire un explode en comptant le nombre de "." contenu dans le nom temporaire du fichier.
Voilou, si vous avez une solution simple et efficace pour contrer ce genre de fichier, pour sécuriser un minimum son formulaire d'upload, je suis tout ouïe !