<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[php open_basedir安全与性能的取舍]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Wed, 08 Sep 2010 05:41:45 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	网站的安全与性能似乎是矛与盾的关系。对于一个php网站来说，尤其难以取舍。举个最简单的例子：php配置文件的open_basedir将 PHP 所能打开的文件限制在指定的目录树，包括文件本身。本来这对于网站的安全是十分有利的；但据笔者从网上获取的资料来看，open_basedir会对php操作io的性能产生很大的影响。研究资料表明，配置了php_basedir的脚本io执行速度会比没有配置的慢10倍甚至更多！<br/><br/><br/>起初，我也不太相信这个结果，不过测试数据却说服我承认这个观点。<br/><br/>创建一个简单的脚本：<br/><div class="code"><br/>&lt;?php <br/>function microtime_float() &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; list($usec, $sec) = explode(&quot; &quot;, microtime());<br/>&nbsp;&nbsp;&nbsp;&nbsp; return ((float)$usec + (float)$sec); <br/>&#125;<br/>&nbsp;&nbsp; $time_start = microtime_float();<br/>&nbsp;&nbsp; is_file(&#039;1.html&#039;);&nbsp;&nbsp;//判断当前目录是否有1.html这个文件<br/>$time_end = microtime_float();<br/>$time = $time_end - $time_start;<br/>&nbsp;&nbsp; echo &quot;Did is_file in $time seconds&#92;n&quot;;<br/>?&gt;<br/><br/></div><br/>对于open_basedir的测试结果<br/>0.0006 / 5.0E-5<br/>差距是相当大的，不过聪明的朋友应该注意到，笔者的网站配置了open_basedir，相对与这样的性能损失来说，我宁愿选择牺牲性能，换取安全，您的选择呢？不用猜，您可能和我的选择一致啦～毕竟服务器安全更重要些。<br/><br/>小提示：如何配置open_basedir<br/>当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时，该文件的位置将被检查。当文件在指定的目录树之外时 PHP 将拒绝打开它。所有的符号连接都会被解析，所以不可能通过符号连接来避开此限制。<br/><br/>特殊值 . 指明脚本的工作目录将被作为基准目录。但这有些危险，因为脚本的工作目录可以轻易被 chdir() 而改变。<br/><br/>在 httpd.conf 文件中中，open_basedir 可以像其它任何配置选项一样用“php_admin_value open_basedir none”的方法关闭（例如某些虚拟主机中）。<br/><br/>在 Windows 中，用分号分隔目录。在任何其它系统中用冒号分隔目录。作为 Apache 模块时，父目录中的 open_basedir 路径自动被继承。<br/><br/>用 open_basedir 指定的限制实际上是前缀，不是目录名。也就是说“open_basedir = /dir/incl”也会允许访问“/dir/include”和“/dir/incls”，如果它们存在的话。如果要将访问限制在仅为指定的目录，用斜线结束路径名。例如：“open_basedir = /dir/incl/”。<br/><br/><br/>Tags - <a href="http://www.dzhope.com/tags/php/" rel="tag">php</a> , <a href="http://www.dzhope.com/tags/%25E5%25AE%2589%25E5%2585%25A8/" rel="tag">安全</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] php open_basedir安全与性能的取舍]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>