Apache mod_env 为php保存敏感信息

1. Apache模块 mod_env


本模块用于控制传送给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文件,将数据库的连接信息保存。

<?php  

return array(  
    'database' => 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文件改为

<?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模式下是不能读取的,请根据具体需求使用。

猜你喜欢

转载自blog.csdn.net/aoshilang2249/article/details/79300524