Apache mod_env 為php儲存敏感資訊(執行個體),apachemod_env
1. Apache模組 mod_env
說明:Apache修改或清除傳送到CGI指令碼和SSI頁面的環境變數 模組名:env_module 源檔案:mod_env.c
本模組用於控制傳送給CGI指令碼和SSI頁面的環境變數。所傳送的環境變數可以來自調用 httpd 進程的shell,或者來自配置過程中所設定(set)或撤銷(unset)的變數。
2. SetEnv 指令
說明:設定環境變數 文法:SetEnv env-variable value 範圍:server config, virtual host, directory, .htaccess 覆蓋項:FileInfo 模組:mod_env
設定一個環境變數,該變數會傳送到CGI指令碼和SSI頁面。
3. UnsetEnv 指令
說明:刪除一個環境變數 文法:UnsetEnv env-variable [env-variable] … 範圍:server config, virtual host, directory, .htaccess 覆蓋項:FileInfo 模組:mod_env
在傳送到CGI指令碼和SSI頁面的環境中,刪除一個或多個環境變數。
如何使用:
在php程式中,如果要串連資料庫,我們會寫一個以下的config檔案,將資料庫的串連資訊儲存。
array( 'host' => '192.168.1.1', 'user' => 'fdipzone', 'password' => '123456', ), ); >
這些都是比較敏感的資訊,可以使用apache mod_env來儲存。
在 apache virtualHost 的 中加入
SetEnv DBHOST 192.168.1.1 SetEnv DBUSER fdipzone SetEnv DBPASS 123456
然後列印$_SERVER,在$_SERVER中會有DBHOST DBUSER DBPASS三個資料了。
Array ( [DBHOST] => 192.168.2.4 [DBUSER] => fdipzone [DBPASS] => 123456 [HTTP_HOST] => demo.fdipzone.com [HTTP_USER_AGENT] => Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.0 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5 [HTTP_ACCEPT_ENCODING] => gzip, deflate ...
php db config檔案改為
array( 'host' => $_SERVER['DBHOST'], 'user' => $_SERVER['DBUSER'], 'password' => $_SERVER['DBPASS'], ), ); >
如果在某些地方需要刪除部分的環境變數,例如在某頁面不需要用到DBHOST,DBUSER,DBPASS,則可以使用UnsetEnv來刪除
UnsetEnv DBHOST DBUSER DBPASS
使用Env儲存的資料只能在web讀取,在php cli模式下是不能讀取的,請根據具體需求使用。