Proteger un formulaire d'upload d'image?

Fermé
corsichris - 4 juin 2008 à 09:49
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 - 22 juin 2008 à 12:43
bonjour,

voila mon probleme;

je suis novice en programation PHP,
j'ai recupéré un script d'agenda sur internet que j'ai bien installé, mais je subissais des attaques de hackers, et je me suis apercu qu'en fait il passait par ce script d'agenda par le formulaire d'upload d'image , ou l'on peut envoyer toute sorte de fichier.
Donc je voudrais tout simplement restreindre le format de fichier d'envoi à un "jpg ou gif"

Je vous joint ci dessous donc le script d'upload et le formulaire html,
si quelqu'un pouvait m'aider en me completant ce code pour palier à ce probleme
merci d'avance pour votre aide...


Formulaire d'envoi
---------------------------------------------------------------------------------------------
<td width="75%" height="29" valign="top"> <br>
<input type="image" border="0" name="imageField222" src="../images/carret0.gif" width="18" height="18" onClick="OnSubmit('upload')">
Upload image<br>
<br>
<input type="image" border="0" name="imageField2222" src="../images/logodel2.gif" width="15" height="15" onClick="OnSubmit('removeimage')">
Remove image </td>
------------------------------------------------------------------------------------------------


scipt d'upload
------------------------------------------------------------------------------------------
<?

function upload_image($idevent , $uploadedfile , $uploadedfile_name)
{
// upload an image for the event
global $CFG;
debug("image upload : $uploadedfile_name" );
$uploadedfilename = "";
if(isset($uploadedfile) && $uploadedfile<>"none" && $uploadedfile_name != "" )
{
$path = basename($uploadedfile_name); // does not use pathinfo function for compatibility with PHP3
$pathex = explode("." , $path);
$uploadedfilename = generate_filename("../".$CFG->image_event_dir , $pathex[1]);



if($uploadedfilename["filename"] <> "" )
{

debug("uploadedfilename = ".$uploadedfilename["path"]);
if(!copy($uploadedfile,$uploadedfilename["path"]))//"$CFG->image_event_dir/".$uploadedfilename))
{
echo("Sorry, Your file failed to upload.<br>" );
echo("Either your file doesn't exist or it was too large." );
return "";
}
else
db_query("UPDATE $CFG->table_event SET image = '$uploadedfilename[filename]' WHERE id=$idevent" );
}
else
echo("Sorry, Your file failed to upload.(filename generation failed)<br>" );
}
return $uploadedfilename;
}
?>
---------------------------------------------------------------------------------------------------------------
A voir également:

4 réponses

Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
4 juin 2008 à 10:34
Dans ton input pour envoyer l'image tu dois rajouter l'attribut type="image/jpeg image/gif" ou un truc dans le genre...
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
4 juin 2008 à 10:38
il faut egalement que tu fasse une verif de securité dans ton php, coté HTML ça ne suffit pas

comment appel tu cette fonction ?

function upload_image($idevent , $uploadedfile , $uploadedfile_name)
0
bien avec ce formulaire deja,

<input type="hidden" name="image" value="">
<input type="file" name="uploadfile">
</p>
<p>
<input type="image" name="upload" border="0" src="../images/carret0.gif" width="18" height="18" onClick="OnSubmit('upload')">
Upload image </p>

Que dois je et ou inserer dans ma fonction upload_image? pour securisé
0
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 69
22 juin 2008 à 12:43
Dans ta fonction upload_image, tu peux faire une vérification de l'extension, genre en faisant un
list($name, $extension) = explode(".", $_FILE['filename']['tmp_name']);
puis en faisant un test sur $extension pour vérifier qu'il s'agit bien d'un jpg ou d'un gif
0