Apache中open_basedir的安全配置

技术探讨  2017-11-06 09:54   3490 open_basedir

open_basedir 将PHP所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。本指令不受安全模式打开或关闭的影响。

open_basedir = .:/tmp/

这个设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,有效防止php木马跨站运行。

在Apache服务器中,切忌一定要在虚拟主机配置文件中添加以下代码,否则PHP木马脚本可以浏览你服务器上的任意文件,这意味着你的服务器很快会被攻破。


open_basedir 的几种这是方法:

1.在php.ini 配置 添加代码如下:

    open_basedir="指定目录"; eg: open_dir="/usr/local/apache/htdocs/www/:/tmp/

    注意:把/usr/local/apache/htdocs/www/替换成你自己的网站目录

2.在程序中设置 添加代码如下:

    ini_set('open_basedir','指定目录');   * 不建议使用此方法

3.在apache的httpd.conf的Directory配置 或者 httpd.conf中的VirtualHost 配置 

    php_admin_value open_basedir "指定目录"   

    需要注意的是: 
    因为/etc/httpd/conf.d/vhost.conf中设置了open_basedir之后, 虚拟用户就不会再自动继承php.ini中的open_basedir设置值了,这就难以达到灵活的配置措施, 所以建议您不要在/etc/httpd/conf.d/vhost.conf中设置此项限制。可以在php.ini中设置open_basedir = .:/tmp/

    例如:
        编辑虚拟主机配置文件
        vi /etc/httpd/conf.d/vhost.conf
        在你的网站配置中添加下面的代码
        
            php_admin_value open_basedir "/usr/local/apache/htdocs/www/:/tmp/"
        

4.nginx fastcgi.conf

    fastcgi_param PHP_VALUE "open_basedir=指定目录"


用open_basedir指定的限制实际上是前缀,不是目录名。也就是说 open_basedir=/home/fdipzone 也会允许访问/home/fdipzone_abc,如果要将访问限制为目录,请使用斜线结束路径名,例如:open_basedir=”/home/fdipzone/”如果要设置多个目录,window使用;分隔目录,Linux使用:分隔目录 


注:转载请注明出处为http://www.sandbean.com/article/43.html。

沙豆网 站长

自己选择的远方,爬着也要走完...

141
文章
6532
点赞

更多文章