zoukankan      html  css  js  c++  java
  • 使用apache mod_env模块保存php程序敏感信息

    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模块更多说明请 查看这里

    如何使用:

    在php程序中,如果要连接数据库,我们会写一个以下的config文件,将数据库的连接信息保存。
    <?php
    
    return array(
        'database' => array(
            'host'     => '192.168.1.1',
            'user'     => 'fdipzone',
            'password' => '123456',
        ),
    );
    
    ?>
    这些都是比较敏感的信息,可以使用apache mod_env来保存。

    启用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>
    tips:使用Env保存的数据只能在web读取,在php cli模式下是不能读取的,请根据具体需求使用。



  • 相关阅读:
    [Windows]Windows的访问控制模型
    [C/C++]宽字符与控制台程序
    [SQL Server]自动化附加和分离数据库
    [ASP.NET]自动发送邮件功能的实现
    [Windows]Windows路径探究
    asp.net中怎么样获取前一页地址
    CheckBox全选CheckBoxList
    远程SQL插入数据
    SQL存储过程调用作业的方法
    [转]javascript 调用后台函数
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715100.html
Copyright © 2011-2022 走看看