限制WAMP文件系统访问

时间:2014-01-06 13:10:30

标签: php apache .htaccess security wamp

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

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

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

2 个答案:

答案 0 :(得分:2)

我认为你是从错误的角度来看待这个问题。

默认情况下,应该通过在httpd.conf文件中添加类似的内容,告知Apache有权访问驱动器上的

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

然后,在每个虚拟主机定义中,您可以指定该站点有权访问的目录。

<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>

或者,如果您想允许从互联网访问,请更改此OrderAllow

<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>

通过使用此机制,您知道默认情况下,如果没有专门授予虚拟主机定义中的访问权限,apache将无法访问系统上的任何文件夹。

答案 1 :(得分:0)

人们不应该能够在.htaccess文件中访问任何虚拟主机中不允许的文件夹

如果您有一个虚拟主机,请说ben.mydevelopment路由到某个文件夹,就没有办法“上去”,您无法访问那个“上面”的文件夹。

您可以使用.htaccess文件拒绝使用

访问某些文件夹
Deny from all

并将其放在相关文件夹中。你无法阻止整个文件系统,因为apache不应该为整个文件系统提供服务。

您是否可以列出您可以访问的文件夹以及运行apache的文件夹(通过主配置或虚拟主机)?

(注意:此外,我不会过分担心人们能够访问您的数据,大多数防火墙拒绝通过HTTP的入站连接,几乎所有家庭路由器拒绝入站连接,并且不知道将它们连接到哪台计算机,所以除非你故意试图设置你自己的实时网络服务器,否则你应该没问题。