apache mod_env模块保存php程序敏感信息的方法

发布时间:2020-08-23编辑:脚本学堂
本文介绍下,在apache服务器中,使用mod_env模块保存php程序输出的敏感信息的方法,有需要的朋友可以作个参考。

本节内容:
apache mod_env模块的用法。

Apache模块 mod_env
说明:允许Apache修改或清除传送到CGI脚本和SSI页面的环境变量
模块名:env_module
源文件:mod_env.c

本模块用于控制传送给CGI脚本和SSI页面的环境变量。
所传送的环境变量可以来自调用 httpd 进程的shell,或者来自配置过程中所设定(set)或撤销(unset)的变量。

SetEnv 指令
说明:设置环境变量
语法:SetEnv env-variable value
作用域:server config, virtual host, directory, .htaccess
覆盖项:FileInfo

模块:mod_env
设置一个环境变量,该变量会传送到CGI脚本和SSI页面。
SetEnv SITE_PATH /home/fdipzone/demosite 

UnsetEnv 指令
说明:删除一个环境变量
语法:UnsetEnv env-variable [env-variable] ...
作用域:server config, virtual host, directory, .htaccess
覆盖项:FileInfo

模块:mod_env
在传送到CGI脚本和SSI页面的环境中,删除一个或多个环境变量。
UnsetEnv SITE_PATH SITE_PATH1 SITE_PATH2 
关于Apache mod_env模块更多说明请查看:apache mod_env模块 中的介绍。

如何使用apache mod_env模块。

在php程序中,如果要连接数据库,会写一个以下的config文件,将数据库的连接信息保存。
 

复制代码 代码示例:
<?php 
return array( 
    'database' => array( 
        'host'     => '192.168.1.1', 
        'user'     => 'fdipzone', 
        'password' => '123456', 
    ), 
); 
 
?> 
 

这些都是比较敏感的信息,可以使用apache mod_env来保存。

1,启用mod_env模块
sudo a2enmod env 
在 apache virtualHost 的 <Directory>中加入:
 

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文件修改为:
 

复制代码 代码示例:
<?php 
 
return array( 
    'database' => array( 
        'host'     => $_SERVER['DBHOST'], 
        'user'     => $_SERVER['DBUSER'], 
        'password' => $_SERVER['DBPASS'], 
    ), 
); 
 
?> 
 

如果在某些地方需要删除部分的环境变量,例如在某页面不需要用到DBHOST,DBUSER,DBPASS,则可以使用UnsetEnv来删除。
 

复制代码 代码示例:
<IfModule mod_env.c> 
UnsetEnv DBHOST DBUSER DBPASS 
</IfModule> 

注意,使用Env保存的数据只能在web读取,在php cli模式下是不能读取的,请根据具体需求使用。