Faille dans ce script d'upload ?

Eléphant du PHP | 68 Messages

12 sept. 2013, 01:34

Bonjour,
J'aimerais savoir si il a une faille dans ce script:
<?php
// upload de l'image //
$hasard = rand(1, 100000000000000) ;

if ($hasard >3){
$resultat=rand(20,100000000000000);

}else{

$resultat=$hasard ;

}
$nomOrigine = $_FILES['image']['name'];
$elementsChemin = pathinfo($nomOrigine);
$extensionFichier = $elementsChemin['extension'];
$extensionsAutorisees = array("gif", "png", "ico","jpeg", "jpg", "GIF","JPG","JPEG","PNG");
if (!(in_array($extensionFichier, $extensionsAutorisees))) {
    echo "Mauvais format d'image";
} else {
    // Copie dans le repertoire du script avec un nom
    // incluant l'heure a la seconde pres 
    $repertoireDestination = dirname (__FILE__)."/i/";
    $nomDestination = "upload_".$resultat.".".$extensionFichier;

    if (move_uploaded_file($_FILES["image"]["tmp_name"], 
                                     $repertoireDestination.$nomDestination)) {
    }
}

// fin upload image //
?>
Merci beaucoup,
Léo45vl

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 sept. 2013, 07:17

Salut,

Oui une belle mais masquée par le fait de renommer le fichier mais ont ne sais jamais il suffit d'avoir le nom du fichier.

Une explication ?

Tu peux mettre ce que tu veux dans ce fichier, comme par exemple du php mais vraiment tous çela que tu veux vu que tu ne vérifie que l'extension et que celle ci est modifiable.
Test aussi le type mime du fichier. Pour un peu plus de sécurité.

Tu peux remplacer ton truc avec les rand() par la fonçtion uniqud ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 68 Messages

12 sept. 2013, 18:30

Je vais mettre la fonction la fonction uniqud ca semble mieux.
Et pour vérifier le mime, est ce que c'est dans le fichier ou c'est ce que le navigateur renvoi ?

Merci