FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  Modifier un fichier PHP en PHP

 




Il y a 32 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Modifier un fichier PHP en PHP

n°6747
bap2703
Posté le 17-05-2006 à 08:55:05  profilanswer
 

Voilà la situation :
 
J'ai un dossier avec :
fichier1.php
fichier2.php
 
Quand je vais voir fichier1.php avec mon navigtateur, il faut qu'il lise et modifie fichier2.php
 
Problème : fopen("fichier2.php","r" ) renvoie fichier2.php mais en version interprétée
Et moi il faut que je puisse lire la source avant de faire la modification.
 
J'avais pourtant lu qu'en local fopen n'interprétait pas les fichiers php  :??:  
 

mood
Google
Posté le 17-05-2006 à 08:55:05  profilanswer
 

n°6748
xstephx
Sarah!
Posté le 17-05-2006 à 14:02:46  profilanswer
 

Si tu fais un truc du style
 
$var = fopen("fichier2.php", r);
echo $var;
 
alors ton fichier2 sera interpreté, parce que son code sera considéré comme une partie du code du fichier1 il me semble.
 
Ca fait la meme chose si tu le mets dans une textarea d'un formulaire j'imagine ? :/ (j'imagine que c'est comme ça que tu voulais l'éditer).
 
La solution (pas propre) serait peut-être de copier le contenu de fichier2.php dans un .txt ou quoi, en changeant les <, > et autres caracteres ascii qui font que le serveur reconnait ça comme du php, par leurs balises html ( &gt; un truc du style ), puis ouvrir le fichier texte créé, et l'editer.
 
Lors de la sauvegarde, il faudrait faire l'opération inverse (remplacer les &gt; et &st; (pas sur de la forme) par les < et > ), pour reecrire dans fichier2.php.
 
Ceci dit, maintenant que j'y réfléchis, si tu fous ça dans une textarea ou quoi, tu t'en tapes que ce soit des balises html, le tout étant juste que ca ne soit pas interpreté comme du php, donc il faut faire en sorte que les <php soient remplacés par quelque chose d'autre, et effectuer le remplacement inverse lors de la sauvegarde.
 
En gros, je vois bien quelque chose de ce style là :
 
$fichier = fopen("fichier2.php","r" );
 
$fichier2 = fopen("fichier2.txt", "w+" );
 
$fichier2 .= "?php>";   // pour eviter d'interpréter la suite
 
$fichier = str_replace("<","&lt;",$fichier);
$fichier = str_replace(">","&gt;",$fichier);
 
$fichier2 .= $fichier;
 
Puis apres tu mets ta variable $fichier2 où tu veux, et dans le traitement de sauvegarde, faudra effectuer le str_replace inverse avant de reecrire dans fichier2.php
 
Je suis pas du tout sur que ça marchera, je suis meme pas sur que le problème vient de là, ni que les bouts de codes mis plus haut sont corrects ;)


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°6749
Mossieur P​ropre
Posté le 21-05-2006 à 09:53:22  profilanswer
 

xstephx a écrit :

Si tu fais un truc du style
 
$var = fopen("fichier2.php", r);
echo $var;
 
alors ton fichier2 sera interpreté, parce que son code sera considéré comme une partie du code du fichier1 il me semble.
 
Ca fait la meme chose si tu le mets dans une textarea d'un formulaire j'imagine ? :/ (j'imagine que c'est comme ça que tu voulais l'éditer).
 
La solution (pas propre) serait peut-être de copier le contenu de fichier2.php dans un .txt ou quoi, en changeant les <, > et autres caracteres ascii qui font que le serveur reconnait ça comme du php, par leurs balises html ( &gt; un truc du style ), puis ouvrir le fichier texte créé, et l'editer.
 
Lors de la sauvegarde, il faudrait faire l'opération inverse (remplacer les &gt; et &st; (pas sur de la forme) par les < et > ), pour reecrire dans fichier2.php.
 
Ceci dit, maintenant que j'y réfléchis, si tu fous ça dans une textarea ou quoi, tu t'en tapes que ce soit des balises html, le tout étant juste que ca ne soit pas interpreté comme du php, donc il faut faire en sorte que les <php soient remplacés par quelque chose d'autre, et effectuer le remplacement inverse lors de la sauvegarde.
 
En gros, je vois bien quelque chose de ce style là :
 
$fichier = fopen("fichier2.php","r" );
 
$fichier2 = fopen("fichier2.txt", "w+" );
 
$fichier2 .= "?php>";   // pour eviter d'interpréter la suite
 
$fichier = str_replace("<","&lt;",$fichier);
$fichier = str_replace(">","&gt;",$fichier);
 
$fichier2 .= $fichier;
 
Puis apres tu mets ta variable $fichier2 où tu veux, et dans le traitement de sauvegarde, faudra effectuer le str_replace inverse avant de reecrire dans fichier2.php
 
Je suis pas du tout sur que ça marchera, je suis meme pas sur que le problème vient de là, ni que les bouts de codes mis plus haut sont corrects ;)


 
logiquement, le simple fait de renommer en fichier en .txt par exemple permettra qu'il ne soit pas exécuté en PHP. A moins que l'administrateur ait inclu l'extension ".txt" dans la liste des fichiers à exécuter en PHP dans la conf (ligne du genre : AddType application/x-httpd-php .php .php3 .phtml )


---------------
Forever Yoko in my heart. | http://www.phoenixfr.org - réseau IRC francophone | knexos xstephx a dit : "blabla"
n°6750
xstephx
Sarah!
Posté le 21-05-2006 à 10:12:34  profilanswer
 

Ok, j'etais pas sur (connais pas bien apache), donc c'est pour ça que je me disais qu'il fallait ptet str_replacer 2-3 trucs ;)


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°6751
bap2703
Posté le 22-05-2006 à 10:11:47  profilanswer
 

Oui c'est bon avec le changement d'extension.
 
Maintenant j'essaye de voir comment bloquer les inclusions de mes fichiers PHP par un autre site.  
 
Et oui le serveur étudiant de mon école est mal foutu : le site de l'étudiant X peut faire n'importe quoi sur le site de l'étudiant Y
 
Bah oui www-data doit avoir les droits de lecture sur les fichiers (sinon il peut pas afficher le site). Mais du coup le site de monsieur X peut inclure,copier, lire, etc. les fichiers du site de monsieur Y.
 
C'est le boulot de l'admin du serveur de gérer ca mais vu que ca semble pas une préoccupation majeure, j'essaye de l'empecher mais je sais pas comment.

n°6752
Mossieur P​ropre
Posté le 22-05-2006 à 11:28:58  profilanswer
 

bap2703 a écrit :

Oui c'est bon avec le changement d'extension.
 
Maintenant j'essaye de voir comment bloquer les inclusions de mes fichiers PHP par un autre site.  
 
Et oui le serveur étudiant de mon école est mal foutu : le site de l'étudiant X peut faire n'importe quoi sur le site de l'étudiant Y
 
Bah oui www-data doit avoir les droits de lecture sur les fichiers (sinon il peut pas afficher le site). Mais du coup le site de monsieur X peut inclure,copier, lire, etc. les fichiers du site de monsieur Y.
 
C'est le boulot de l'admin du serveur de gérer ca mais vu que ca semble pas une préoccupation majeure, j'essaye de l'empecher mais je sais pas comment.


 
pas vraiment de possibilités, l'admin devrait activer le safe_mode dans le php.ini


---------------
Forever Yoko in my heart. | http://www.phoenixfr.org - réseau IRC francophone | knexos xstephx a dit : "blabla"
n°6753
Deadog
Dain Bramaged
Posté le 24-05-2006 à 00:08:32  profilanswer
 

si, heuresement :)
 
toutes tes pages incluses doivent appeler une fonction qui réside dans ta/tes pages appelantes (je suppose que les pages appelantes sont uniquement celle par lesquelles un visiteur normal devrait appeler pour voir ton site, ie: n'avoir qu'une page index.php et toutes les autres sont des pages incluses)
 
genre dans index.php :

Code :
  1. function valid_call () {
  2.   /*  FONCTION DE SECURITE
  3.    *
  4.    *  Cette fonction est appelée au début de chaque autres scripts du site par :
  5.    *  @valid_call();
  6.    *  De ce faite, si ces scripts sont appelés de l'extèrieur et non pas par
  7.    *  le index.php, alors ils s'arréteront automatiquement.
  8.    *
  9.    */
  10.   return 1;
  11. }


 
et dans les pages incluses, au tout début, tu met "@valid_call();"
le @ permet d'éviter d'afficher une erreur si jamais il ne trouve pas la fonction.
 
Bien sur, tu peux faire renvoyer un code plutôt que 1, et le vérifier à chaque coup ;)

n°6754
xstephx
Sarah!
Posté le 24-05-2006 à 00:11:44  profilanswer
 

Ah tiens, c'est bien pensé ça comme solution :) C'est marrant, parce que dans le fond ca tire parti d'une manière dont est conçue l'interpréteur php, non ?


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°6755
Deadog
Dain Bramaged
Posté le 24-05-2006 à 00:14:24  profilanswer
 

bah ... oui [:spamafote]
 
 
edit :
 
tu peux même t'amuser à coder le nom de la fonction :D


Message édité par Deadog le 24-05-2006 à 00:15:52
n°6756
xstephx
Sarah!
Posté le 24-05-2006 à 01:12:26  profilanswer
 

Disons que ça enfreint une sorte de règle fondamentale de la programmation quoi... C'est un style peu apprécié des puristes se servir de la manière dont son traitées les erreurs comme la base d'un mécanisme de protection, ça fait un peu bricolage.


---------------
Gagnez un iPhone en jouant sur www.findupays.be
n°6757
Deadog
Dain Bramaged
Posté le 24-05-2006 à 01:52:23  profilanswer
 

à quoi tu crois que sert le @ ? :D
 
et la programmation par erreur se fait très bien, sous un autre nom : la programmation par exception

n°6758
bap2703
Posté le 24-05-2006 à 11:30:52  profilanswer
 

Merci :)
 
Il me reste à trouver comment me proteger de toutes les instructions shell qu'on peut executer par php, genre cp, cat...
 
[:sankao]

n°6759
Deadog
Dain Bramaged
Posté le 24-05-2006 à 12:24:29  profilanswer
 

défini des alias :D

n°6760
bap2703
Posté le 24-05-2006 à 16:38:43  profilanswer
 

:lol:
 
Y a moyen de foutre un beau boxon ^^

n°6764
CryoGen
Powered by kitkat©
Posté le 26-05-2006 à 19:13:56  profilanswer
 

j'imagine bien l'alias vi = rm -rf /
 
oups :D


---------------
I am the bone of my sword...
n°6787
shion
"Ubuntu" mangez en
Posté le 03-06-2006 à 13:49:59  profilanswer
 

une technique toute conne, t'a essailler de l'ouvrir en binaire ?


---------------
I'm an Ubuntu user with Xgl/Compiz.
n°6788
Deadog
Dain Bramaged
Posté le 03-06-2006 à 14:58:59  profilanswer
 

l'ouverture binaire ne fait de différence avec l'ouverture normal que sur un serveur windows

n°6794
shion
"Ubuntu" mangez en
Posté le 04-06-2006 à 10:04:48  profilanswer
 

Deadog a écrit :

l'ouverture binaire ne fait de différence avec l'ouverture normal que sur un serveur windows


oupse desoler j'avais oublier :p


---------------
I'm an Ubuntu user with Xgl/Compiz.
mood
Google
Posté le 04-06-2006 à 10:04:48  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Autre


  Modifier un fichier PHP en PHP

 

Hit Parade