fopen permission

fopen permission - PHP - Programmation

Marsh Posté le 31-01-2008 à 01:04:26    

Salut,  
 
J'ai un ptit problème de fopen. J'ai pas les droits pour écrire dans un fichier. J'ai tout tenté les différents mode, appelle de méthode system pour changer les droits etc etc etc y'a rien qui fonctionne. J'ai pas le droit de faire appel à la fonction php chmod. J'ai le droit pour la fonction system mais ça n'execute pas bien. .
 
C'est pour une grosse appli donc je doute que j'ai le droit de modifier le safe mode.  
 
Bref n'y a t il pas une petite astuce pour outrepasser cette sécurité..  
 
J'ai besoin d'écrire dans un fichier car je récupére les valeurs d'un formulaire et j'aimerai les écrire dans un fichier du style config.php pour que ce fichier soit accessible par d'autres fichiers...  
 
Désolé si je me suis mal fait comprendre il se fait tard...  
 
Bye


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 01:04:26   

Reply

Marsh Posté le 31-01-2008 à 02:39:44    

Le problème est que si tu réussi à écrire un fichier php, alors c'est que:
- PHP a les droits sur ce fichier,
- apache les a aussi
- n'importe qui connaissant le nom du fichier aussi
- et n'importe qui peut exécuter du code php arbitraire sur le serveur
 
Les solutions sont:
- utiliser une BDD pour y stoker des DONNÉES, et pas de code exécutable, parceque ce que tu t'apprêtes à faire rendra la maintenance plus difficile (d'où provient un bogue: du code principal ou d'un code stoké dans une BDD?). La programmation objet t'aidera à départager données et code.
- utiliser un nom de fichier aléatoire unique afin qu'on ne puisse le découvrir facilement, et de limiter les droits d'écriture au répertoire le contenant voire à ce fichier seulement. Ne jamais alors passer l'url de ce fichier à l'internaute, mais uniquement son numéro aléatoire via un script intermédiaire qui inclu le fichier php.
 
Le plus sécurisé pour ton fichier de config, s'il contient des valeurs utilisateurs que tu veux utiliser directement dans PHP après validation, est d'utiliser la fonction serialize sur une array contenant toutes les valeurs de config (ça peut être une array d'array même) et de stocker tel quel dans le champs 'config_php' de la table 'utilisateur' d'une BDD. Avec cette méthode tu peux facilement rajouter et modifier des paramètres de config.
 
Le plus simple reste encore d'utiliser les sessions s'il s'agit de paramètres de configuration qui doivent être utilisés sur tout le site (comme les préférences d'affichage): le fonctionnement est presque identique à celui ci-dessus, les variables étant alors sérialisées et stockées automatiquement dans des fichiers gérés par le serveur (pas besoin de BDD).


Message édité par nargy le 31-01-2008 à 02:42:34
Reply

Marsh Posté le 31-01-2008 à 07:56:23    

Merci de ta réponse :)  
 
Le problème c'est que justement les valeurs que je souhaite stocker sont les paramètres d'accès à la bd ! (je reconnais que si j'enleve la sécurité sur ce fichier c'est pas terrible mais alors comment faire)  
 
En fait à l'origine les paramètres étaient rentrés en dur dans le fichier config.php. Le problème c'est qu'on ne peut pas demander à un utilisateur "lambda" de rentrer ces paramètres dans un fichier de config c'est pas terrible. Voilà pourquoi j'ai fait un formulaire, je voulais que le traitement de ce formulaire enregistrer ces paramètres dans un fichier config.php. Ainsi, chaque fichier php souhaitant se connecter à la bd fait un require du fichier connexionbd.php qui lui même fait un require du fichier config.php.  
 
Je pense que j'ai été plus clair, quelques heures de sommeil ça aide ;)  
j'y retourne  
 
bye


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 10:28:38    

C'est pas à un utilisateur lambda de rentrer ces données dans un fichier de conf, c'est à la personne qui installe le site de le faire.[:skeye]
Et c'est fait une fois pour toutes par quelqu'un qui sait ce qu'il fait, c'est tout.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-01-2008 à 11:44:04    

Pas dans ce cas. On a une appli distribuée. Plusieurs utilisateurs peuvent proposer de stocker certaines données dans leur bd. Ce sont donc des utilisateurs 'lambda' (ou presque) et doivent donner accès à leur bd via le formulaire.


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 11:44:46    

...donc tu as probablement une meta-base stockant les utilisateurs?:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-01-2008 à 11:54:01    

oui, on pourrait eventuellement stocker les paramètres de connexion dans la metabase mais c'est pas terrible..  
 
En plus les utilisateurs sont créés bien après le traitement du formulaire..
 
Je précise que j'ai récupéré cette appli, ça fait 3 ans qu'elle est développée y'a des choix qui ont été faits et on ne peut pas tout changer.


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 11:55:11    

Tu veux dire que les utilisateurs peuvent enregistrer les paramètres de leur base avant d'exister?[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 31-01-2008 à 11:55:19    

Y'a pas une commande qui permet de dire qu'un dossier est propriétaires de tout le monde avec tous les droits ? (même avec un chmod 777 * j'arrive pas à faire de require sur le config.php


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 13:19:40    

Bon en fait, un chmod arrange les choses mais c est pas terrible quand même..


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 13:19:40   

Reply

Marsh Posté le 31-01-2008 à 16:38:32    

Pas d'autres solutions que de donner tous les droits sur ce fichier ? Il n'y pas moyen de spécifier les droits lors du fopen ?


---------------
http://plainedemazerolles.free.fr
Reply

Marsh Posté le 31-01-2008 à 17:21:32    

Un .htaccess ne peut pas me régler ce problème ?  
 
Si je comprend bien le problème. Quand je lance un navigateur à localhost je suis l'utilisateur www-data. Si un fichier dans le repertoire www a le propriétaire courant par exemple mathieu je ne pourrais pas écrire dessus.  
 
Donc comment faire sans passer par un chmod ou chown ?
 
Merci :)


---------------
http://plainedemazerolles.free.fr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed