IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[PHP] Empêcher php de remonter l'arborescence dans un dossier


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Par défaut [PHP] Empêcher php de remonter l'arborescence dans un dossier
    salut!

    ben voilà je sais pas si c'est très clair, mais le principe est :

    j'ai un dossier (/public_html/dossier/) qui peut être accédé dans un navigateur en tapant 'monsite.fr/dossier/'

    j'aimerais, grâce à un fichier htaccess par exemple, que php (et autres langages of course!) ne puissent pas remonter l'arborescence (grâce à opendir() par exemple...)

    pourquoi?
    parce que ce dossier est lié à un compte FTP que je prête à quelqu'un, et que si ce quelqu'un se fait pirater son compte, il serai facile grâce à php d'aller supprimer tous les fichiers/repertoires parents!

    merci de votre aide!!

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pas possible : PHP se moque totalement des .htaccess comme de l'an 40, surtout avec un opendir(). Ce qui va marcher avec un opendir, ce sont les droits d'accès au système de fichiers, donc utilisation de chmod, suphp, peut-être modification du php.ini, etc.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Par défaut
    arf mince alors...
    euh est-ce que tu sais ce qu'il faut modifier pour faire ça?

    merci d'avance!

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ca, quoi ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Par défaut
    ben pour empêcher php de remonter l'arbo... !

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par gagou9
    j'aimerais, grâce à un fichier htaccess par exemple, que php (et autres langages of course!) ne puissent pas remonter l'arborescence (grâce à opendir() par exemple...)
    Il y a bien open_basedir pour cela mais son placement dans un fichier .htaccess, d'après ma lecture de la documentation, serait impossible avec une version de PHP inférieure à 6. De plus, le fait de placer cette contrainte dans un fichier .htaccess n'a aucun intérêt car normalement modifiable par l'utilisateur (communément, un accès FTP, par exemple).

    Si PHP est employé comme module (pré-requis à l'emploi des .htaccess aussi, me direz-vous) alors vous pouvez définir un open_basedir propre à chaque hôte virtuel. Une autre possibilité serait de faire fonctionner PHP en "CGI" à l'aide du module suPHP, par exemple, les scripts peuvent alors être exécutés sous l'identité de leur propriétaire (ce qui permet de faire réellement prendre en compte les permissions et propriétaires des fichiers car, typiquement, avec PHP en module nous n'avons qu'un utilisateur - apache - qui a accès à tout ou presque).

    (il faut tout de même bien mesurer les avantages et inconvénients de chaque solution : mise en place, performances, etc)

    Citation Envoyé par gagou9
    parce que ce dossier est lié à un compte FTP que je prête à quelqu'un, et que si ce quelqu'un se fait pirater son compte, il serai facile grâce à php d'aller supprimer tous les fichiers/repertoires parents!
    C'est un peu exagéré car il y a quand même les permissions système qui entrent en jeu.


    Edit : arf, _Mac_ m'a devancé en mon absence.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Par défaut
    pour le open_basedir, n'est-il pas possible de mettre le fichier htaccess dans le repertoire parent, et ainsi spécifier open_basedir dans une balise directory ou un truc du genre?

    merci!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Par défaut
    encore moi,
    si je fais un htaccess contenant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Directory /home/durab/public_html/bricoles/>
    php_admin_value open_basedir /home/durab/public_html/bricoles/
    </Directory>
    et que je le mets dans le reperatoire /home/durab/public_html/

    ça devrait marcher non?

    j'ai tester mais ça fonctionne pas, j'aimerai bien savoir pourquoi!!

    merci !!

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pour votre premier message :
    Non parce que si ce htaccess est en dehors de la partie web (plus "haut" que le DocumentRoot), il ne sera pas lu (donc non considéré) de toute façon. Il faut (et vaut mieux) spécifier ces différents open_basedir depuis le fichier de configuration d'Apache (php_admin_value open_basedir "/tmp/:/home/site1/")

    Pour le deuxième :
    Les directives <Directory> et php_admin_value n'ont pas lieu d'être dans un fichier .htaccess. Elles ne sont pas prévues pour être utilisée dans ce contexte (je vous renvoie à leur documentation respective).

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 19
    Par défaut
    ah oké, donc le seul moyen c'est le httpd.conf et les vhost si je comprends bien...

    bon ben je vais demander à mon hebergeur !

    merci beaucoup!!

Discussions similaires

  1. [PHP-JS] Manipuler en Javascript un tableau dans un formulaire PHP
    Par Bouillons2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/11/2010, 10h10
  2. empecher php de remonter l'arborescence
    Par gagou9 dans le forum Autres langages pour le Web
    Réponses: 2
    Dernier message: 26/11/2007, 22h49
  3. Réponses: 3
    Dernier message: 21/02/2006, 18h05
  4. Réponses: 4
    Dernier message: 30/11/2005, 12h16
  5. [PHP-JS] Php dans un script javascript
    Par nebule dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/11/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo