在 CMS 中存储数据库凭据的最佳做法是什么?现在我在我的数据库单例类中声明它们:
$this->credentials = array("hostname"=>"hostname", "username"=>"username","password"=>"password", "database"=>"database");
但是搜索在哪里更改它们并不是那么直观,而且我计划稍后为 cms 制作安装文件。
您在哪里以及如何存储您的连接偏好?
在 CMS 中存储数据库凭据的最佳做法是什么?现在我在我的数据库单例类中声明它们:
$this->credentials = array("hostname"=>"hostname", "username"=>"username","password"=>"password", "database"=>"database");
但是搜索在哪里更改它们并不是那么直观,而且我计划稍后为 cms 制作安装文件。
您在哪里以及如何存储您的连接偏好?
CakePHP 使用一个名为 database.php 的配置文件(在 /app/config/ 中),其中声明了一个 DATABASE_CONFIG 类:
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
);
var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
);
}
这创建了一个用户可以设置所有数据库配置的地方,而直观的目录结构使存储数据库配置的位置一目了然。并且您还可以为生产、开发和测试目的指定多种配置,它们之间很容易切换。
作为一般规则,我不会将凭据直接放入源代码中,而是将它们存储在配置文件中。这使得更改它们变得更加容易,例如当您从开发机器移动到测试机器时,它可能(应该)连接到不同的数据库。
此配置文件应存储在 webroot 目录之外的某个位置。
您还可以通过某种方式对密码进行加密,以便在配置文件被泄露的情况下更加安全。另一方面,如果有人可以物理访问您的服务器,那么您无论如何都会被搞砸,所以这可能不值得。
正如您所提到的,您可以使用单例类或更简单的方法。
在我所有的 config.inc.php 文件中,我有一个标准的关联数组
$config['Main_Database'] = '';
$config['db_user'] = '';
$config['db_pass'] = '';
$config['db_host'] = '';
这个概念是相同的,你在正确的轨道上。作为人类,让它成为对你有意义的东西。如果有人可以访问您的服务器,那么无论如何您都搞砸了,所以就更安全而言,这并不是什么大问题。
至于安装文件,我见过很多应用程序打开配置文件,通过代码调整一些特定部分,然后实际将文件重新写入服务器(而不是“存储设置”)。它实现了相同的结果,但通过向导而不是手动完成。