代码之家  ›  专栏  ›  技术社区  ›  Deniss Kozlovs

如何在基于PHP的典型CMS中存储数据库凭据?

  •  1
  • Deniss Kozlovs  · 技术社区  · 15 年前

    在CMS中存储数据库凭据的最佳做法是什么?现在我在数据库singleton类中声明它们:

    $this->credentials = array("hostname"=>"hostname", "username"=>"username","password"=>"password", "database"=>"database");
    

    但是搜索到哪里可以更改它们并不是很直观,而且我计划稍后为CMS制作安装文件。

    在哪里以及如何存储连接首选项?

    3 回复  |  直到 10 年前
        1
  •  1
  •   jerebear    15 年前

    您可以使用singleton类,如您所提到的,或者更简单的类。

    在所有config.inc.php文件中,我都有一个标准的关联数组

    $config['Main_Database'] = '';
    $config['db_user'] = '';
    $config['db_pass'] = '';
    $config['db_host'] = '';
    

    这个概念是一样的,你走对了。做一个对你有意义的人。如果有人可以访问你的服务器,你就完蛋了,所以在更安全的方面也没什么大不了的。

    至于安装文件,我看到过许多应用程序打开配置文件,通过代码调整一些特定的部分,然后实际将文件重新写入服务器(而不是“存储设置”)。它实现了相同的结果,但通过向导而不是手动完成。

        2
  •  1
  •   Calvin    15 年前

    cakephp使用名为database.php(in/app/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' => '',
        );
    }
    

    这就创建了一个用户可以设置所有数据库配置的位置,而直观的目录结构使存储数据库配置的位置变得明显。您还可以为生产、开发和测试目的指定多个配置,这些配置很容易在两者之间切换。

        3
  •  1
  •   Treb    15 年前

    一般来说,我不会将凭证直接放入源代码,而是将它们存储在配置文件中。这使得更改它们更加容易,例如,当您从开发机器移动到测试机器时,测试机器可能(应该)连接到不同的数据库。

    此配置文件应存储在webroot目录之外的某个位置。

    您还可以以某种方式加密密码,以在配置文件受到破坏时提高安全性。另一方面,如果有人可以物理访问您的服务器,那么无论如何,您都会失败,因此可能不值得这样做。