Php 限制WAMP文件系统访问

Php 限制WAMP文件系统访问,php,apache,.htaccess,security,wamp,Php,Apache,.htaccess,Security,Wamp,我的电脑上安装了一个WAMP堆栈。昨天,我正在用PHP处理文件系统,注意到我可以访问硬盘中的任何目录,甚至可以访问网站文档根目录之上的目录。这是我想要避免的一个明显的安全问题 目前,我正在使用WAMP堆栈中的多个虚拟主机以及使用主机文件的自定义域 我正在寻找一些可以在httpd.conf文件中进行的配置,如果可能的话,可以在.htaccess文件中进行更好的配置,这些配置将限制不同站点中的脚本对其文档根的访问。在添加或删除虚拟主机时,如果代码不需要任何更改,那就更好了。人们不应该在任何虚拟主机中

我的电脑上安装了一个WAMP堆栈。昨天,我正在用PHP处理文件系统,注意到我可以访问硬盘中的任何目录,甚至可以访问网站文档根目录之上的目录。这是我想要避免的一个明显的安全问题

目前,我正在使用WAMP堆栈中的多个虚拟主机以及使用主机文件的自定义域


我正在寻找一些可以在httpd.conf文件中进行的配置,如果可能的话,可以在.htaccess文件中进行更好的配置,这些配置将限制不同站点中的脚本对其文档根的访问。在添加或删除虚拟主机时,如果代码不需要任何更改,那就更好了。

人们不应该在任何虚拟主机中与.htaccess文件一起访问您不允许的文件夹

如果你有一个虚拟主机,比如ben.mydevelopment,它路由到某个文件夹,那么就没有办法“向上”,你不能访问“在”那个文件夹之上的文件夹

您可以使用.htaccess文件通过使用拒绝访问某些文件夹

Deny from all
并将其放置在相关文件夹中。您不能阻塞整个文件系统,因为apache不应该首先为您提供整个文件系统

您能否列出能够访问的文件夹以及apache正在运行的文件夹(通过主配置或虚拟主机)


(注意:另外,我不会太担心人们能够访问您的数据,大多数防火墙拒绝通过HTTP的入站连接,几乎所有家庭路由器都拒绝入站连接,并且不知道要将它们连接到哪台计算机,因此,除非您有意尝试设置自己的live web服务器,否则您应该没事)我认为你从错误的角度看待这一问题

默认情况下,通过在
httpd.conf
文件中放置类似的内容,应该告诉Apache它可以访问驱动器上的任何内容

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

通过使用此机制,您知道在默认情况下,apache无法访问系统上的任何文件夹,除非从虚拟主机定义中明确授予访问权限。

浏览器中的PHP是否可以访问
DocumentRoot
文件夹上方的文件?@anubhava是的,甚至可以删除它们。这就是您不安装wamp的原因。Apache不提供编辑或删除目录列表的方法。您看到了什么可以删除文件?这是最简单的答案@MikeB所有这些PHP函数都可以工作<代码>chdir(“x:\”)
getcwd()@SantaClaus与Apache无关。我想帮你,我已经提供了所有的建议,你提供的信息有限。我能帮忙吗?这不是我要找的。我想阻止PHP访问其他目录谢谢你让我知道:)我也这么做了,但它允许我电脑中的一切,但远程用户无法访问主页和website@RubinAnbin提出一个问题,给出所有相关信息
<VirtualHost *:80>
    DocumentRoot "C:/websites/www/site1"
    ServerName site1.dev
    ServerAlias www.site1.dev
    Options Indexes FollowSymLinks
    <Directory  "C:/websites/www/site1">
        Order Deny,Allow
        Deny from all
        # This is my development version of site1.com and only allowed to be used on my internal network  
        Allow from 127.0.0.1 localhost ::1 192.168.2
    </Directory>
    ErrorLog "C:/websites/dev_logs/apache_error.log"
    CustomLog "d:/websites/dev_logs/apache_access.log" combined
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:/websites/www/site1"
    ServerName site1.com
    ServerAlias www.site1.com
    Options Indexes FollowSymLinks
    <Directory  "C:/websites/www/site1">
        Order Allow,Deny
        # This is the live site can be accessed from the internet
        Allow from all
    </Directory>
    ErrorLog "C:/websites/live_logs/apache_error.log"
    CustomLog "d:/websites/live_logs/apache_access.log" combined
</VirtualHost>