Yii配置和git:如何安全地管理敏感信息?

o2rvlv0m  于 2022-11-09  发布在  Git
关注(0)|答案(1)|浏览(121)

当使用版本控制系统(如git)来控制使用Yii framework的web应用程序时,将密码和其他敏感信息保存在仓库之外的常见做法是什么?
显而易见的解决方案是将整个配置文件添加到 .gitignore 中,但这毕竟会使Web应用程序变得没有 backbone 。

wn9m85ua

wn9m85ua1#

  • 将配置文件拆分为多个文件
  • 将默认值和非敏感数据设置到包含在GIT中的配置文件中
  • 在Git中忽略的文件中设置敏感数据和自定义参数

我有一个像这样的设置为一个项目建立与Yii 1,但可以适应Yii 2基本太。
Yii 2 advanced已经有了环境功能,并且默认忽略了一些本地配置文件,我认为它应该被改编和使用。
无论如何,这里是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中,您拥有敏感数据

相关问题