>  기사  >  백엔드 개발  >  apache中对非站点索引的访问限制

apache中对非站点索引的访问限制

WBOY
WBOY원래의
2016-06-13 12:48:21858검색

apache中对非站点目录的访问限制
apache设置中有一段
Alias /test "/var/www/web2/test"

    Options FollowSymLinks Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all




如果此时 /var/www/web2/test 目录中有一个php下载的页面
down.php大概是这样:

$filename=$_GET["file"];<br />
 <br />
ob_end_clean();<br />
header("Expires: 0");<br />
if(!$file = @fopen($filename,'r')){<br />
        echo 'read error';<br />
        exit();<br />
}<br />
 <br />
flock($file,LOCK_SH);<br />
$filesize=filesize($filename);<br />
 <br />
Header("Content-type: application/octet-stream");<br />
Header("Accept-Ranges: bytes");<br />
Header("Accept-Length: ".$filesize);<br />
Header("Content-Disposition: attachment; filename=" . $file_name);<br />
if($filesize>0)<br />
{<br />
        echo fread($file,$filesize);<br />
}<br />
fclose($file);<br />
ob_get_contents();<br />
ob_end_clean();<br />
exit;




这个页面测试有很大的漏洞, 客户在浏览器输入down.php?file=../../../etc/xxx
类似的就能下载系统的文件。
请问如何配置apache让站点只能访问自身目录以及子目录,不能访问其他目录?


------解决方案--------------------
apache 本身没有这个功能,也不需要这个功能
因为 apache 只是个二传手

你可以在 php.ini 中配置
open_basedir = 允许访问的路径列表

也可以将 open_basedir 放在 apache 的 httpd.conf 或 .htaccess 中
php_admin_value open_basedir 允许访问的路径列表
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사: PHP跟cms的关系 다음 기사: php读取资料失败?