Page 1 sur 1

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 20:18
par Nside
Bonjour,

Je possède un site d'hébergement d'image en autre, maintenant un problème s'oppose à moi.

Chaque utilisateurs peuvent récupérer avec un simple code tout ce qui se trouve sur mon site, en écrivant un code PHP et en mettant l'extension .jpg ou autre extension accepter par mon script.

Je sais qu'il est possible de contrer cela en vérifiant le mime du fichier, maintenant je ne sais pas du tout comme m'y prendre.

Merci, de votre aide.

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 20:45
par Didier07

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 20:55
par Elodie
Un conseil également :

Ne pas vérifier le type MIME du fichier juste après le POST car on peut l'usurper également. Il faut enregistrer le fichier sur le disque dans le répertoire temporaire et seulement après, vérifier son type MIME par son nom de fichier.

Le mieux également est de chercher la taille du fichier image, ainsi si ce n'est pas une véritable image, la taille sera de 0 et on peut même obtenir le type MIME de l'image via cette méthode par la même occasion :

Code : Tout sélectionner

$size = getimagesize($_FILES['uploaded']['tmp_name']);
  $fp = fopen($_FILES['uploaded']['tmp_name'], "rb");
  if ($size && $fp)
    {
    if( substr($size['mime'], 0, 6) != 'image/' )
      {
      echo("Le fichier envoyé n'est pas une image.");
      }else{
      if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
        {
        echo "<p>The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded</p>";
        }else{
        echo "Sorry, there was a problem uploading your file.";
        }
      }
    }else{
    echo("Le fichier envoyé n'est pas une image.");
    }
  }

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 23:01
par Nside
J'ai du mal à comprendre quelque chose.

Dans le truc 'image/', faut que j'écrive le nom du dossier ? C'est ce que j'ai fait... Sauf qu'il m'indique toujours que le fichier envoyer n'est pas une image.

Ensuite ou "rb" il correspond à quoi ?

Merci, :)

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 23:11
par Inconnu
rb pour droits en lecture binaire
Et pour image/ , il ne faut pas le remplacer, ce n'est pas un répertoire, c'est le début du type MIME image , ex : image/png.
En fait, getimagesize() te renvoie un tableau contenant différentes infos, notamment à l'index 'mime' le type MIME de ton image.
En filtrant les 6 premières lettres, tu obtiens normalement "image/" ce qui englobe tous les types d'image.

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 23:12
par Nside
A ok d'accord merci.

Vérifier le type mime d'un fichier

Publié : 1 novembre 2012 à 23:19
par Inconnu
De rien.
Ensuite concernant ton problème, je ne suis pas sur d'avoir compris. Tu veux empêcher tout le monde de télécharger tes images ? Ou juste empêcher le hotlink ( le fait que quelqu'un utilise l'URL de ton image pour l'afficher sur son site) ? Ou alors autre chose et j'ai vraiment rien compris ^^
Dans le second cas, c'est très simple, dans le premier, tout simplement impossible.
Impossible dans le sens où il y aura toujours un moyen de récupérer l'image "à la main".
Peut être que la solution serait tout simplement de mettre un watermak ( sorte de signature http://fr.wikipedia.org/wiki/Tatouage_num%C3%A9rique) sur tes images, comme ça personne ne pourra usurper ton travail.


EDIT : Après relecture je pense que j'avais mal compris ta question. Tu veux en fait prévenir les attaques d'injection de code php à l'aide d'une fausse image, c'est ça ?
Du coup mes solutions sont inutiles, et le mieux est effectivement ce qui a été dis lors des précédents posts. Bonne chance ;)

Vérifier le type mime d'un fichier

Publié : 2 novembre 2012 à 00:47
par Nside
En effet tu avais très mal compris ;)

Les deux solutions dite précédemment, m'affiche toujours, "Le fichier envoyé n'est pas une image"...

Vérifier le type mime d'un fichier

Publié : 9 novembre 2012 à 23:33
par Inconnu
Tu as dis

"Dans le truc 'image/', faut que j'écrive le nom du dossier ? C'est ce que j'ai fait... Sauf qu'il m'indique toujours que le fichier envoyer n'est pas une image. "

Ce à quoi j'avais répondu
"Et pour image/ , il ne faut pas le remplacer, ce n'est pas un répertoire, c'est le début du type MIME image , ex : image/png. "

As-tu bien laissé "image/" ? ça peut venir de là

Bonne chance !