Proteger un formulaire d'upload d'image?

corsichris -  
Sri Lumpa Messages postés 177 Statut Membre -
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 Statut Membre 69
 
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 1159 Statut Membre 206
 
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
corsichris
 
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 Statut Membre 69
 
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