Aller au contenu

Sujets conseillés

Posté

Salut a tous,

Je suis en train de faire un systeme de gestion de photo de mariage base uniquement sur des fichiers.

Ca implique que mes scripts de gestions prennent en parametres le path vers ces fichiers.

Comment faire pour s'assure que le fichier ouvert se trouve bien dans l'arborescance utilisee ?

En clair :

$ROOT=/var/site/toto/

$FICHIER=$ROOT . $FICHIER_DEMANDE

Ce que je veux, c'est massurer que $FICHIER donne bien un path qui se trouve dans l'arbo 'ROOT'.

Si le visiteur rentre qq chose comme :

  • truc/photo.jpg : ca passe car le fichier resultat est /var/site/toto/truc/photo.jpg
  • truc/../../../../etc/passwd echoue car le fichier resultant est /etc/passwd et se trouve en dehors de ROOT

Merci pour vos idees.

Lolo

Posté (modifié)

Salut Lolo :)

Essaye un simple :

$FICHIER_DEMANDE = real_path($FICHIER_DEMANDE);
if (empty($FICHIER_DEMANDE) || !preg_match("^/$ROOT/i", $FICHIER_DEMANDE)) {
   trigger_error('Vous n\'avez rien à faire ici !', E_USER_ERROR);
}

ca devrait fonctionner. ;)

@++

<edit modérateur : Inutile de citer le message précédent en entier>

Modifié par NorSeb
Posté (modifié)

Ok, pile poile ce qu'il me fallait : Merci. :):)

(Le vrais nom de la fonction est realpath()).

Modifié par destroyedlolo

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...