数据库凭据加密 - CodeIgniter

时间:2014-02-20 08:09:56

标签: php mysql database codeigniter encryption

如何在CodeIgniter中加密我的数据库凭据?

Config文件中存在的数据库可信。

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

先谢谢。

1 个答案:

答案 0 :(得分:3)

我建议使用环境变量。假设你正在使用Apache。您可以在VirtualHost中设置这些变量,并在以后引用这些变量。

这样,您可以从应用程序中隐藏实际的数据库值,但是您将密码的存储从应用程序移动到Apache。

How do you use SetEnv to read variables in Apache?

我认为这就是你的意思。您无法从应用中隐藏这些值。在某个层次,他们需要对您的应用程序是原始的。

您还可以使用$_SERVERgetenv()功能来检索您设置的值。 getenv() documentation

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/path/httpd"
    ServerName mysite.local
    ServerAlias mysite.local
    SetEnv DB_HOST myhost
    SetEnv DB_USERNAME username
    SetEnv DB_PASSWORD password
    ...
    SetEnv DB_DBNAME dbase
</VirtualHost>

PHP
$db['default']['hostname'] = getenv('DB_HOST');
$db['default']['username'] = getenv('DB_USERNAME');
$db['default']['password'] = getenv('DB_PASSWORD');
$db['default']['database'] = getenv('DB_DBNAME');
...