Version complète: sur le forum Webmaster Hub : Securise l'acces a un fichier
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
destroyedlolo
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 :

CODE
$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
Aksyon
Salut Lolo smile.gif

Essaye un simple :

CODE
$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. wink.gif

@++

<edit modérateur : Inutile de citer le message précédent en entier>
destroyedlolo
Ok, pile poile ce qu'il me fallait : Merci. smile.gif smile.gif

(Le vrais nom de la fonction est realpath()).
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.