Apache禁止目录访问方法介绍

本文介绍如何在Apache服务器中配置禁止目录访问,包括禁止列出目录文件列表、禁止或允许特定IP与域名访问目录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发生,那么我们如何来实现这种功能呢?我们可以通过Apache来实现禁止目录访问(禁止游览列出的目录或文件列表)、禁止或允许IP与域名访问目录的功能。

环境说明

  我使用的是DedeCMS DedeAmpz的PHP运行环境,PHP版本5.2.4,Apache版本2.2.4

在Apache中配置禁止目录访问,即禁止游览列出的目录/文件列表的方法

  访问网站目录时Apache默认配置为可列出目录/文件列表,即当你访问http://localhost时会列出相关的目录和文件列表,我们可以通过修改Apache配置文件httpd.conf来实现禁止列出目录/文件列表,方法如下:

1、打开apache配置文件httpd.conf

2、找到

1
2
3
4
5
6
<Directory />
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

只需要修改Options Indexes为Options None即可,:根据PHP运行环境安装包的不同,Options Indexes也有可能是Options Indexes FollowSymLinks,一并改为Options None即可。

3、保存httpd.conf,并重启Apache即可,此时再访问http://localhost时, 报apache http 403 禁止访问错误信息

  Forbidden

  You don’t have permission to access / on this server.

Apache单个或多个目录禁止访问方法

  这种方法通常用来禁止访问者访问后台管理目录或者程序目录,方法如下

1、打开apache配置文件httpd.conf

2、创建Directory块,比如禁止访问某个类库目录,可以这样实现

1
2
3
4
<Directory /var/www/www.leapsoul.cn/inc>
    Order Deny,Allow
    Deny from all
</Directory>

上述代码实现了禁止所有用户访问www.leapsoul.cn下inc目录的功能。如要实现禁止访问所有目录中inc目录的功能,只要将

1
<Directory /var/www/www.leapsoul.cn/inc>

更改为

1
<Directory /var/www/www.leapsoul.cn/*/inc>

即可。

3、重启Apache服务器。

其他说明

1、只允许或禁止某个域名进行目录访问

1
2
3
4
5
<Directory /var/www/www.leapsoul.cn/inc>
    Order Deny,Allow
    Deny from abc.com
    Allow from apache.org
</Directory>

上述代码实现禁止abc.com域中主机访问inc目录,允许apache.org域中主机访问inc目录的功能。

2、只允许或禁止某个IP进行目录访问

1
2
3
4
5
<Directory /var/www/www.leapsoul.cn/inc>
    Order Deny,Allow
    Deny from 10.1.1.2
    Allow from 192.168.1.0/255.255.255.0
</Directory>

上述代码实现禁止IP10.1.1.2访问www.leapsoul.cn/inc目录,允许IP192.168.1子网中的主机访问www.leapsoul.cn/inc目录的功能。

注意:Allow from 192.168.1.0/255.255.255.0等同于Allow from 192.168.1或Allow from 192.168.1.0/24

  至此,通过配置Apache服务器我们可以实现禁止目录访问(列出目录或文件列表),也可以实现禁止访问单个或者多个目录,更可以对访问者进行控制,比如允许或禁止某个IP或者域名对目录进行访问,这些功能对提高和优化WEB服务器的安全性能是必不可少的方法。



当我们访问某个网站时,在后面增加相应的目录,就可以浏览到目录,对于网站来说,是很不安全的。 

     
      解决办法:
              1、编辑httpd.conf文件

    找到如下内容:
                  ......
                  <Directory "C:/Program Files/Apache2.2/htdocs">
                          #
                          # Possible values for the Options directive are "None", "All",
                          # or any combination of:
                                Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
                          #
                          # Note that "MultiViews" must be named *explicitly* --- "Options All"
                          # doesn't give it to you.
                          #
                          # The Options directive is both complicated and important.  Please see
                          # http://httpd.apache.org/docs/2.2/mod/core.html#options
                          # for more information.
                          #
                          Options Indexes FollowSymLinks

                          #
                          # AllowOverride controls what directives may be placed in .htaccess files.
                          # It can be "All", "None", or any combination of the keywords:
                            Options FileInfo AuthConfig Limit
                          #
                          AllowOverride None

                          #
                          # Controls who can get stuff from this server.
                          #
                          Order allow,deny
                          Allow from all

                  </Directory>
                  ......

    在Options Indexes FollowSymLinks在Indexes前面加上 -  符号。
              即: Options -Indexes FollowSymLinks
    【备注:在Indexes前,加 + 代表允许目录浏览;加 -  代表禁止目录浏览。】

      这样的话就属于整个Apache禁止目录浏览了。

      如果是在虚拟主机中,只要增加如下信息就行:
                    <Directory "D:\test">
                        Options -Indexes FollowSymLinks
                        AllowOverride None
                        Order deny,allow
                        Allow from all
                </Directory>
        这样的话就禁止在test工程下进行目录浏览。

备注: 切记莫把“Allow from all”改成 “Deny from all”,否则,整个网站都不能被打开。 

http://morgan363.javaeye.com/blog/645363


在Apache的配置文件httpd.conf中找到需要设置目录的Directory属性,并在Options一行去掉Indexes   
  比如说:   
  <Directory    "d:\web">   
                  Options    Indexes    FollowSymLinks   
  </Directory>   
  改为:   
  <Directory    "d:\web">   
                  Options    FollowSymLinks   
  </Directory>   

-----------------------------------------------------------------
Alias    /edit/    "/home/dbphp/db/"   
     
                  <Directory    "/home/dbphp/db">   
                                  Options    Indexes    MultiViews                    =>                    Options    MultiViews                       
                                  AllowOverride    None   
                                  Order    allow,deny   
                                  Allow    from    all   
                  </Directory>   
     
  把Indexes去掉后,就不允许列表了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值