zoukankan      html  css  js  c++  java
  • apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法

    apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法

     

    首先我们来看两段对上传目录设置无权限的列子,配置如下:

    <Directory
    							"要去掉PHP执行权限的目录路径,如/upload">
    								

    ErrorDocument 404 /404/404.html
    

    ErrorDocument 403 /404/403.html
    

    <FilesMatch
    							".(?i:php|php3|php4)$"> // ?是尽可能多的匹配.php的字符串,i是不区分大小写,然后冒号后面跟上正则表达式,也可以写成:<FilesMatch
    								".(php|php3)$">
    										

    Order allow,deny
    

    Deny from all
    

    </FilesMatch>
    					

    </Directory>
    					

    上面的意思就是说,<Directory "要去掉PHP执行权限的目录路径,例如:/upload"> 内目录路径下所有php文件不区分大小写,通过order,allow,deny原则判断拒绝执行php文件,对nginx同样也是可应用。

    另外一种方法,是设置在.htaccess里面的,这个方法比较灵活一点,针对那些没有apapche安全操作权限的网站管理员,推荐使用!
    Apache
    环境规则内容如下:Apache限制uploads目录执行php脚本,把规则添加到.htaccess文件中,代码如下:

    RewriteEngine on RewriteCond
    								%
    										!^$
    

    RewriteRule uploads/(.*).(php)$ 
    												[F]
    															

    此方法仅限于apache服务器环境,windows环境无效。

    apache禁止访问某些文件/目录
    增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:

    <Files ~ ".inc$">
    								

    Order allow,deny
    

    Deny from all
    

    </Files>
    					

    禁止访问某些指定的目录:(可以用 <DirectoryMatch> 来进行正则匹配)

    <Directory ~ "^/var/www/(.+/)*[0-9]{3}">
    								

    Order allow,deny
    

    Deny from all
    

    </Directory>
    					

    通过文件匹配来进行禁止,比如禁止所有针对图片的访问:

    <FilesMatch .(?i:gif|jpe?g|png)$>
    															

    Order allow,deny
    

    Deny from all
    

    </FilesMatch>
    					

    针对URL相对路径的禁止访问:

    <Location
    						/dir/>
    									

    Order allow,deny
    

    Deny from all
    

    </Location>
    					

     

     

    apache配置禁止访问】
    1.
    禁止访问某些文件/目录
    增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库:

    <Files ~ ".inc$">
    Order allow,deny
    Deny from all
    </Files>

    禁止访问某些指定的目录:(可以用 <DirectoryMatch> 来进行正则匹配)

    <Directory ~ "^/var/www/(.+/)*[0-9]{3}">
    Order allow,deny
    Deny from all
    </Directory>

    通过文件匹配来进行禁止,比如禁止所有针对图片的访问:

    <FilesMatch .(?i:gif|jpe?g|png)$>
    Order allow,deny
    Deny from all
    </FilesMatch>

    针对URL相对路径的禁止访问:

    <Location /dir/>
    Order allow,deny
    Deny from all
    </Location>

    针对代理方式禁止对某些目标的访问(<ProxyMatch> 可以用来正则匹配),比如拒绝通过代理访问cnn.com

    <Proxy http://piaoyun.cc/*>
    Order allow,deny
    Deny from all
    </Proxy>

    2. 禁止某些IP访问/只允许某些IP访问
    如果要控制禁止某些非法IP访问,在Directory选项控制:

    <Directory "/var/www/web/">
    Order allow,deny
    Allow from all
    Deny from 10.0.0.1 #
    阻止一个IP
    Deny from 192.168.0.0/24 #
    阻止一个IP
    </Directory>

    只允许某些IP访问,适合比如就允许内部或者合作公司访问:

    <Directory "/var/www/web/">
    Order deny,allow
    Deny from all
    All from example.com #
    允许某个域名
    All from 10.0.0.1 #
    允许一个iP
    All from 10.0.0.1 10.0.0.2 #
    允许多个iP
    Allow from 10.1.0.0/255.255.0.0 #
    允许一个IP段,掩码对
    All from 10.0.1 192.168 #
    允许一个IP段,后面不填写
    All from 192.168.0.0/24 #
    允许一个IP段,网络号
    </Directory>

    Apache:解决办法;

    <Directory "/home/domain/public_html">
    Options -Indexes FollowSymLinks
    AllowOverride All
    <Files ~ ".txt">
    Order allow,deny
    Deny from all
    </Files>
    </Directory>

     

     

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

    环境说明

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

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

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

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

    2、找到

    [html] view plain copy

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

    只需要修改Options IndexesOptions 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.

    (注意:<Directory "e:/wamp/www/">中需要一并改为Options None

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

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

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

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

    [html] view plain copy

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

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

    [html] view plain copy

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

    更改为

    [html] view plain copy

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

    即可。

    3、重启Apache服务器。

    其他说明

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

    [html] view plain copy

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

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

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

    [html] view plain copy

    1. <Directory /var/www/www.leapsoul.cn/inc>  
    2.     Order Deny,Allow  
    3.     Deny from 10.1.1.2  
    4.     Allow from 192.168.1.0/255.255.255.0  
    5. </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.1Allow from 192.168.1.0/24

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

     

    文章来源:刘俊涛的博客

    地址:http://www.cnblogs.com/lovebing

    欢迎关注,有问题一起学习欢迎留言、评论。

  • 相关阅读:
    HtmlEncode 和 HtmlDecode
    Visual Studio .Net 的一些小技巧(2)
    Array和ArrayList的区别
    c#中 ?? 是什么意思?
    带有图片预览功能的上传表单 上传预览
    Js实现Repeater全选/反选 功能 终极解决方案
    处理URL重写后postback重写失效的问题 .browser文件
    在TreeView中使用CheckBox(c#)
    SQL操作全集
    智能仓库管理系统方案(一)
  • 原文地址:https://www.cnblogs.com/lovebing/p/8036759.html
Copyright © 2011-2022 走看看