Конфигурация Yii и git: как безопасно управлять конфиденциальной информацией? - PullRequest
2 голосов
/ 09 марта 2020

Какова общая практика хранения паролей и другой конфиденциальной информации в хранилище при использовании системы контроля версий, такой как git, для веб-приложения, созданного с использованием инфраструктуры Yii?

Очевидным решением является добавление весь файл конфигурации в .gitignore , но он оставляет веб-приложение без костей.

1 Ответ

2 голосов
/ 11 марта 2020
  • Разделение файла конфигурации на несколько
  • Установка значений по умолчанию и отсутствие конфиденциальных данных в файлах конфигурации, которые ДОЛЖНЫ быть включены в GIT
  • Установка конфиденциальных данных и пользовательских параметров в файлах, которые игнорируются в Git

У меня есть такая настройка для проекта, созданного с Yii 1, но может быть адаптирована и для Yii2 basi c.

Yii 2 продвинутый уже имеет функциональность среды и по умолчанию игнорирует некоторые локальные конфигурационные файлы, и я думаю, что он должен быть адаптирован и использован.

В любом случае, вот пример для Yii 1:

Список файлов:

protected/config/main.php
protected/config/params.php
protected/config/custom.params.php // ignored
protected/config/import.php
protected/config/db.common.php
protected/config/db.example.php
protected/config/db.php // ignored

Содержимое protected/config/main.php:

<?php

$params = require(dirname(__FILE__) . '/params.php');

if (file_exists(dirname(__FILE__) . '/custom.params.php')) {
  $params = CMap::mergeArray($params, require(dirname(__FILE__) . '/custom.params.php'));
}

$config= array(
  // ...
  'import' => require(dirname(__FILE__) . '/import.php'),
  'modules' => array(
    // ...
  ),
  // application components
  'components' => array(
    // ...
    'db' => require(dirname(__FILE__) . '/db.common.php'),
  ),
  'params' => $params,
);

return $config;

Содержимое protected/config/db.common.php:

<?php

return CMap::mergeArray(
    array(
        'emulatePrepare' => true,
        'enableProfiling' => true,
        'enableParamLogging' => true,
        'charset' => 'utf8',
        'tablePrefix' => '', 
    ),
    require(dirname(__FILE__).'/db.php') 
);

Содержимое protected/config/db.example.php:

<?php

return array(
    'connectionString' => 'mysql:host=127.0.0.1;dbname=yii_db',
    'username' => 'root',
    'password' => '',
);

Как вы его используете:

  • После клонирования вашего проекта он сломается, потому что у вас нет db.php файла конфигурации
  • Так что вы скопируйте / вставьте db.example.php в db.php и настройте его
  • При желании вы можете создать файл custom.params.php, если хотите настроить параметры текущего приложения локально
  • В db.commpn.php у вас есть по умолчанию для компонента db, и в db.php у вас есть конфиденциальные данные
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...