如何在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;
先谢谢。
答案 0 :(得分:3)
我建议使用环境变量。假设你正在使用Apache。您可以在VirtualHost中设置这些变量,并在以后引用这些变量。
这样,您可以从应用程序中隐藏实际的数据库值,但是您将密码的存储从应用程序移动到Apache。
How do you use SetEnv to read variables in Apache?
我认为这就是你的意思。您无法从应用中隐藏这些值。在某个层次,他们需要对您的应用程序是原始的。
您还可以使用$_SERVER
或getenv()
功能来检索您设置的值。 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');
...