XAMPP (WAMP) 服务器 - 禁止访问根目录之外的文件

scz*_*vos 0 php apache xampp document-root windows-8.1

我在 Windows 8.1 上使用 XAMPP。

我在 apache 配置中有这个:

DocumentRoot "C:\Users\David\Dropbox\Programming\PHP"
<Directory "C:\Users\David\Dropbox\Programming\PHP">
Run Code Online (Sandbox Code Playgroud)

虚拟主机:

<VirtualHost *:80>
ServerName http://spedice
DocumentRoot "C:\Users\David\Dropbox\Programming\PHP\Projects_Kuba\Spedice\SczCMS\www"
</VirtualHost>

<VirtualHost *:80>
ServerName http://domaciucetnictvi
DocumentRoot "C:\Users\David\Dropbox\Programming\PHP\Projects_Kuba\DomaciUcetnictvi\www"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试访问根目录 - C 或访问某些文件夹,如 C:\Program Files 等。它通常可以工作。如何禁止离开此文件夹:C:\Users\David\Dropbox\Programming\PHP?

输出:

脚本文件

<?php
mkdir('../../../../../../folder');
?>
Run Code Online (Sandbox Code Playgroud)

放置在:C:\Users\David\Dropbox\Programming\PHP\Projects_Kuba\DomaciUcetnictvi\www

调用如下: http://domaciucetnictvi/script.php

谢谢!

Seb*_*ork 5

尝试修改PHP 配置中的open_basedir 设置(请参阅运行时配置以获取更多信息)。这将阻止 PHP 访问定义的 basedir(s) 之外的目录。

- -编辑 - -

再确定一点。您可以在 Apache 配置文件 php.ini 或 .htaccess 文件中设置 open_basedir。

在 php.ini 中,您可以通过添加以下内容来执行此操作:

open_basedir = "/path/to/first/folder:/path/to/second/folder"
Run Code Online (Sandbox Code Playgroud)

在 .htacces 中,你可以这样做:

php_flag open_basedir "/path/to/first/folder"
Run Code Online (Sandbox Code Playgroud)

在您的 Apache 配置中尝试:

<Directory /docroot1>
   php_admin_value open_basedir /path/to/first/folder
</Directory>

<Directory /docroot2>
   php_admin_value open_basedir /path/to/second/folder
</Directory>
Run Code Online (Sandbox Code Playgroud)