Конфигурационные переменные в среде Apache
Я использую несколько разных корзин покупок PHP на работе, и мы пытаемся получить различные конфигурационные файлы под контролем версий. До этого момента мы просто игнорировали их в git, потому что, конечно, мы не хотим, чтобы пароли производственного уровня были доступны кому-либо. Кроме того, большинство из нас, разработчиков, проводят локальные установки с уникальной информацией.
Разговаривая с нашим системным администратором о проблеме, я вдруг вспомнил, что мы можем установить переменные окружения в блоке apache vhost и получить к ним доступ из PHP, например, так:
Apache: SetEnv db_user "username"
PHP: <?php $config['db']['user'] = $_ENV['db_user'];
Кажется, что это будет работать без проблем, но я никогда не видел, чтобы это делалось так раньше. Есть ли какие-либо последствия (технические, безопасность и т. Д.) Или ограничения в обработке информации аутентификации таким образом?
1 ответ
Это довольно близко к тому, что предлагается в Руководстве по безопасности PHP: Базы данных и SQL.
Они отмечают, что одной потенциальной проблемой является риск раскрытия переменной с помощью вызова "что-то вроде phpinfo() или print_r($_SERVER)". Поэтому вопрос заключается в том, можете ли вы контролировать этот риск - и доверяете ли вы всем, кто получает доступ к этому виртуальному хосту (в вашем контексте ответ на этот вопрос, скорее всего, будет "да").
Они также предлагают добавить дополнительный уровень перенаправления, поместив эти учетные данные в файл, читаемый только пользователем root - что кажется разумным при развертывании, хотя и слегка параноидальным в контексте разработки.