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