Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2008, 12h25   #1
Invité régulier
 
Inscription : mars 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 20
Points : 6
Points : 6
Envoyer un message via MSN à gagou9
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!!
gagou9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 14h40   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
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.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 14h52   #3
Invité régulier
 
Inscription : mars 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 20
Points : 6
Points : 6
Envoyer un message via MSN à gagou9
arf mince alors...
euh est-ce que tu sais ce qu'il faut modifier pour faire ça?

merci d'avance!
gagou9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 15h41   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 314
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 314
Points : 8 597
Points : 8 597
Ca, quoi ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 15h43   #5
Invité régulier
 
Inscription : mars 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 20
Points : 6
Points : 6
Envoyer un message via MSN à gagou9
ben pour empêcher php de remonter l'arbo... !
gagou9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 15h50   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 15h59   #7
Invité régulier
 
Inscription : mars 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 20
Points : 6
Points : 6
Envoyer un message via MSN à gagou9
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!
gagou9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 17h29   #8
Invité régulier
 
Inscription : mars 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 20
Points : 6
Points : 6
Envoyer un message via MSN à gagou9
encore moi,
si je fais un htaccess contenant ça :
Code :
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 !!
gagou9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 19h33   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2008, 20h23   #10
Invité régulier
 
Inscription : mars 2005
Messages : 20
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 20
Points : 6
Points : 6
Envoyer un message via MSN à gagou9
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!!
gagou9 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h08.


 
 
 
 
Partenaires

Hébergement Web