2014-02-20 32 views
0

如何在CodeIgniter中加密我的數據庫憑證?數據庫憑證加密 - CodeIgniter

配置文件中存在的數據庫可信性。

$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; 

在此先感謝。

+3

爲什麼你想這麼做?只是讓外部人員無法訪問此文件。那會做。 –

+0

加密意味着試圖隱藏/保護某人。你想從誰那裏隱藏這些配置值?你的應用程序需要它們工作,所以你的應用程序需要能夠解密它們。如果您的應用程序有解密代碼,並且配置文件是應用程序的一部分,那麼任何有權訪問配置文件的人都應該可以訪問解密方式。 Ergo,這看起來似乎毫無用處,除非你能澄清更多。 – deceze

+0

@deceze - 我需要在配置文件中加密密碼,如果它不可能,那麼是否有替代的相同?我不希望任何人可以訪問或傷害我的憑據。 –

回答

3

我會建議使用環境變量。假設你在使用Apache。您可以在VirtualHost中設置這些變量,並在以後引用這些變量。

這種方式可以隱藏應用程序中的實際數據庫值,但是您將密碼從應用程序存儲到Apache中。

How do you use SetEnv to read variables in Apache?

我覺得這是你的意思做。您無法完成從應用程序中隱藏這些值。在某些層面,他們需要對您的應用程序進行原始處理。

您也可以使用$_SERVERgetenv()函數檢索您設置的值。 getenv() documentation

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    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'); 
...