Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 27/12/2007, 11h37   #1
Membre confirmé
 
Inscription : décembre 2006
Messages : 307
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 307
Points : 226
Points : 226
Par défaut [FTP] Limiter l'utilisation de PHP

Bonjour,

Je souhaiterai limiter les fonctions de php dans un répertoire spécifique.
Est ce possible ? Comment ?

Le but est de pouvoir donner un accès sur un répertoire bien spécifique à une personne afin de modifier un template. Il y a seulement quelques echo et include.
Je ne souhaite pas que cette personne puisse récupérer le code source du script , des valeurs de variables ou encore exécuter un code arbitraire.

Puis je faire cela simplement, sans moteur de template ?

Merci
max-mag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2007, 12h40   #2
Membre régulier
 
Inscription : août 2007
Messages : 147
Détails du profil
Informations personnelles :
Localisation : France, Drôme (Rhône Alpes)

Informations forums :
Inscription : août 2007
Messages : 147
Points : 90
Points : 90


Je comprends pas tout, mais on ne peut pas recuperer un programme en PHP

bernard26000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2007, 10h44   #3
Membre habitué
 
Inscription : février 2005
Messages : 186
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 186
Points : 149
Points : 149
Salut,

Une idée toute simple : mettre le template dans un répertoire à part, quitte à faire un lien ailleurs pour que le reste du site y accède avec le chemin habituel (à condition d'être sous Unix/Linux, mais un site web devrait toujours être sur ce type de systèmes ^^), et tu te débrouilles pour que l'utilisateur n'est accès qu'à ce répertoire (via ftp par exemple).

Comme ça, aucun risque qu'il récupère le code, puisque le code n'y sera pas.

Quant à l'execution possible de scripts qu'il rajouterai dans ce répertoire, il te suffira de choisir un répertoire hors d'accès d'Apache (IIS n'existe pas de toute façon :p).

Cordialement,

Mathias, fan d'Unix.
novices est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2007, 21h17   #4
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Il me semle que sous Unix tu peux restrindre l'acces au fichiers (appliquer des droits) et créér des liens symboliques. Pour que la personne ne puisse pas récupérer le code ya qu'à interdire la modification, la lecture, mais pas l'execution.
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 12h54   #5
Membre habitué
 
Inscription : février 2005
Messages : 186
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 186
Points : 149
Points : 149
l'utilisateur ne peut pas exécuter directement le script (à moins de lui offrir un shell distant, mais bon faudrait être suicidaire ^^) ce sera donc le job d'apache.

étant donné que l'utilisateur doit pouvoir écrire dans un fichier, il pourra le renommer, parce que renommer c'est écrire, c'est comme ça, donc il pourra virer le template pour y mettre un script php, et renommer son fichier en .php qui sera alors exécutable par apache (qui lui se contrefout des droits d'exécution des fichiers).

donc on en revient à la solution proposée au début.
novices est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 15h12   #6
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Citation:
Envoyé par novices Voir le message
l'utilisateur ne peut pas exécuter directement le script (à moins de lui offrir un shell distant, mais bon faudrait être suicidaire ^^) ce sera donc le job d'apache.

étant donné que l'utilisateur doit pouvoir écrire dans un fichier, il pourra le renommer, parce que renommer c'est écrire, c'est comme ça, donc il pourra virer le template pour y mettre un script php, et renommer son fichier en .php qui sera alors exécutable par apache (qui lui se contrefout des droits d'exécution des fichiers).

donc on en revient à la solution proposée au début.
Bon, en clair ce que tu veux c'est créer un répértoire dans lequel les fichiers .php ne s'executent pas.
C'est bien ça?
cmako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 15h19   #7
Membre confirmé
 
Inscription : décembre 2006
Messages : 307
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 307
Points : 226
Points : 226
Non, je voudrais que php s'exécute mais que des fonctions que j'aurais approuvé. Avec ce que j'ai vu ici, cela me semble complexe ou pas assez sûr ou fiable.

Actuellement je pense partir là-dessus :
Je donne un accès FTP au bon répertoire, et je gère les droits au niveau Unix pour que l'utilisateur ftp ne puisse modifier que le fichier nommé "template.html"
Dans ce fichier template, pas de php, mais des balises perso type **ma_variable**.
Ensuite je parse ce fichier en php pour remplacer les **ma_variable** par l'équivalent en php.
max-mag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 17h11   #8
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
Il y a différents moyens suivant comment est appelé ce fichier (direct ou non) :
  • utiliser une extension PHP telle que suhosin pour bloquer/autoriser certaines fonctions (dans un contexte d'évaluation dynamique - fonction eval - ou non - les deux sont possibles) voir plus simplement utiliser la possibilité d'interdire certaines fonctions en jouant sur la directive de configuration disable_functions et que vous pouvez redéfinir de manière locale par fichier htaccess (implique l'utilisation de PHP comme module Apache)
  • compter sur la façon dont sont (ou non) interprétés ces templates : du fait que l'interprétation d'un script est réalisée sur son extension, tout ne sera pas interprété par le serveur. Si vous utilisez des inclusions (require/include) directement ce sera en effet potentiellement dangereux mais les vrais systèmes de templates se basent généralement sur des expressions régulières pour les transformations (ça limite les possibilités et le(s) designer(s) n'ont ainsi pas besoin de connaître le langage PHP).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2008, 17h25   #9
Membre actif
 
Inscription : mars 2007
Messages : 342
Détails du profil
Informations personnelles :
Localisation : Luxembourg

Informations forums :
Inscription : mars 2007
Messages : 342
Points : 178
Points : 178
Citation:
Envoyé par max-mag Voir le message
Non, je voudrais que php s'exécute mais que des fonctions que j'aurais approuvé. Avec ce que j'ai vu ici, cela me semble complexe ou pas assez sûr ou fiable.

Actuellement je pense partir là-dessus :
Je donne un accès FTP au bon répertoire, et je gère les droits au niveau Unix pour que l'utilisateur ftp ne puisse modifier que le fichier nommé "template.html"
Dans ce fichier template, pas de php, mais des balises perso type **ma_variable**.
Ensuite je parse ce fichier en php pour remplacer les **ma_variable** par l'équivalent en php.
Donc tu veux par exemple que les fonctions tel que include et echo et pas par exemple if for etc. ?

Si c'est ça dans ce cas là je te conseille de créer un script qui va uploader ton fichier et puis va l'analyser pour absence de mots interdits.
cmako 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 16h53.


 
 
 
 
Partenaires

Hébergement Web