php文件包含目录配置open_basedir的使用与性能分析
2017-01-15 16:19
866 查看
1.open_basedir介绍
open_basedir 将php所能打开的文件限制在指定的目录树中,包括文件本身。当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。本指令不受安全模式打开或关闭的影响。
2.open_basedir设置方法
1.在php.ini 加入open_basedir="指定目录"
2.在程序中使用
ini_set('open_basedir', '指定目录');
但不建议使用这种方法
3.在apache的httpd.conf中的Directory配置
php_admin_value open_basedir "指定目录"
httpd.conf中的VritualHost
php_admin_value open_basedir "指定目录"
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使用:分隔目录。
3.使用open_basedir限制目录访问
首先创建一个VirtualHost,设置open_basedir 为/home/fdipzone/sites/in.fdipzone.com/
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/fdipzone/sites/in.fdipzone.com ServerName in.fdipzone.com php_admin_value open_basedir "/home/fdipzone/sites/in.fdipzone.com/" <Directory "/home/fdipzone/sites/in.fdipzone.com"> allow from all Options + Indexes </Directory> </VirtualHost>
在上一层目录 /home/fdipzone/sites/ 中创建一个test.txt文件,在in.fdipzone.com中创建php执行以下代码
<?php echo file_get_contents('../test.txt'); ?>
因为test.txt不在限定的目录范围内,因此php提示警告
Warning: file_get_contents(): open_basedir restriction in effect. File(../test.txt) is not within the allowed path(s): (/home/fdipzone/sites/in.fdipzone.com/) in /home/fdipzone/sites/in.fdipzone.com/index.php on line 3
4.设置open_basedir的性能分析
open_basedir开启后会影响I/O,因为每个调用的文件都需要判断是否在限制目录内。测试程序,读取限制目录内同一文件10000次
<?php // 记录开始时间 $starttime = getMicrotime(); // 读取10000次文件 for($i=0; $i<10000; $i++){ file_get_contents('test.txt'); } // 记录结束时间 $endtime = getMicrotime(); printf("run time %f ms\r\n", ((float)($endtime)-(float)($starttime))*1000); function getMicrotime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
关闭open_basedir测试
run time 137.237072 ms
打开open_basedir测试
run time 404.207945 ms
开启open_basedir后,执行时间是关闭的3倍。
总结:使用open_basedir可以限制程序可操作的目录和文件,提高系统安全性。但会影响I/O性能导致系统执行变慢,因此需要根据具体需求,在安全与性能上做平衡。
相关文章推荐
- php文件包含目录配置open_basedir的使用与性能详解
- 限制php本地文件只能在指定目录打开的open_basedir配置
- php open_basedir的使用与性能分析
- php性能分析工具XHProf安装配置使用教程(linux精华版)
- Empire帝国cms安装错误:使用记事本打开PHP配置文件php.ini: 设置short_open_tag = On
- centos LAMP第三部分php,mysql配置 php配置文件 配置php的error_log 配置php的open_basedir 安装php的扩展模块 phpize mysql配置第二十一节课
- php.ini安全配置禁用危险函数open_basedir防止跨目录
- Nginx虚拟目录配置文件(包含PHP配置与重写)
- PHP 配置文件中open_basedir选项作用
- 使用PHP对配置文件进行修改
- php获取某一目录包含的所有目录和文件
- PHP最常用的ini函数分析 针对PHP.ini配置文件
- PHP文件包含漏洞原理分析和利用方法
- php 远程包含文件漏洞分析第1/6页
- PHP 配置文件中open_basedir选项作用
- 使用 PHP 处理 XML 配置文件
- PHP文件包含漏洞原理分析和利用方法
- 使用NUnit测试包含应用程序配置的dll文件
- 第二人生的源码分析(六十九)使用LLXmlTree类来分析XML配置文件
- FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。