Config vars dans l’environnement d’Apache vars

Je gère quelques paniers PHP différents au travail et nous essayons de récupérer les différents fichiers de configuration sous contrôle de version. Jusque-là, nous les ignorions simplement parce que, bien sûr, nous ne souhaitons pas que les mots de passe au niveau de la production soient accessibles à n’importe qui. De plus, la plupart des développeurs exécutent des installations locales avec des informations uniques.

En discutant de ce problème avec notre administrateur système, je me souviens tout à coup que nous pourrions définir des variables d’environnement dans le bloc apache vhost et y accéder depuis PHP, comme ceci:

Apache: SetEnv db_user "username"

PHP: <?php $config['db']['user'] = $_ENV['db_user'];

Il semble que cela fonctionnerait sans problème, mais je n’ai jamais vu cela comme avant. Existe-t-il des implications (techniques, de sécurité, etc.) ou des limitations dans la gestion des informations d’authentification de cette manière?

C’est assez proche de quelque chose qui est proposé dans le Guide de sécurité PHP: bases de données et SQL .

Ils notent que l’un des problèmes potentiels est le risque d’exposer la variable via un appel à “quelque chose comme phpinfo () ou print_r ($ _ SERVER).” Donc, la question est de savoir si vous pouvez contrôler ce risque – et si vous faites confiance à tous ceux qui ont access à cette vhost (dans votre contexte, la réponse à cette question est probablement «oui»).

Ils proposent également d’append un niveau supplémentaire de redirection en plaçant ces informations d’identification dans un fichier lisible uniquement par root, ce qui semble raisonnable dans le déploiement, même s’il est légèrement paranoïaque dans un contexte de développement.