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 DedeAmpz的PHP运行环境,PHP版本5.2.4,Apache版本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 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.

(注意:<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.cn下inc目录的功能。如要实现禁止访问所有目录中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.1或Allow from 192.168.1.0/24

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

 

文章来源:刘俊涛的博客

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

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

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

  1. 宝塔 windows下apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件

    首先我们来看两段对上传目录设置无权限的列子,配置如下: //在宝塔下如用/upload这个路径应用无效,一定要C:/wwwroot/upload才有效果 <Directory "要去掉 ...

  2. ftp下载目录下所有文件及文件夹内(递归)

    ftp下载目录下所有文件及文件夹内(递归)   /// <summary> /// ftp文件上传.下载操作类 /// </summary> public class FTPH ...

  3. g2o20160430下的csparse文件夹内的CMakeLists.txt

    1. g2o20160430下的csparse文件夹内的CMakeLists.txt cmake_minimum_required(VERSION 2.6) PROJECT(csparse) SET( ...

  4. Apache环境下强制http跳转至https的配置总结

    一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...

  5. Linux批量替换文本,文件夹内所有文本内容

    1.替换文件夹内所有文件匹配的字符串 sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件夹路径` 例如将/var/www/test文件夹下的所有文件内容中的 ...

  6. 用Python来实现列举某个文件夹内所有的文件列表

    用Python来实现列举某个文件夹内所有的文件列表.吾八哥我动手写代码之前分析了下,遍历一个文件夹,肯定是需要用到os模块了,查阅模块帮助信息,可知os.listdir()方法可以列举某个文件夹内的所 ...

  7. windows Apache 环境下配置支持HTTPS的SSL证书

    windows Apache 环境下配置支持HTTPS的SSL证书 1.准备工作 1)在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有SSL版本的A ...

  8. 安装bootcamp时提示“找不到$winpedriver$文件夹,请验证该文件夹是否和bootcamp处于同一文件夹内?”

    问题:我苹果系统是10.8.3的 装的win7 64位的! 这个bootcamp是我在别人那里拷贝的,我装的时候就这样了,但是别人装是好好的,还有我在MAC系统下载bootcamp的时候我的U盘格式是 ...

  9. PHP复制文件夹及文件夹内的文件

    //1.取被复制的文件夹的名字://2.写出新的文件夹的名字://3.调用此函数,将旧.新文件夹名字作为参数传递://4.如需复制文件夹内的文件,第三个参数传1,否则传0: public functi ...

随机推荐

  1. 灰姑娘的水晶鞋(NOIP模拟赛Round 7)

    [问题描述] 传说中的水晶鞋有两种颜色:左边的水晶鞋是红色,右边的是蓝色,据说穿上它们会有神奇的力量. 灰姑娘要找到她所有的n双水晶鞋,它们散落在一条数轴的正半轴上,坐标各不相同,每双水晶鞋还有一个权 ...

  2. Application binary interface and method of interfacing binary application program to digital computer

    An application binary interface includes linkage structures for interfacing a binary application pro ...

  3. Centos7下zabbix部署(三)自定义监控项

    引言 在前面的博客中我们介绍了zabbix自带的模板,并且完成了我们的一些比较常用的监控,现在我们如果想要监控我们磁盘的IO,这时候zabbix并没有给我们提供这么一个模板,所以我们需要自己来创建一个 ...

  4. hdu 5084(矩阵操作)

    HeHe Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  5. PhpStorm 快捷键大全 PhpStorm 常用快捷键和配置+如何关闭快捷键ctrl+alt+方向键旋转屏幕

    如果映射的是eclipse的快捷键,又同时安装了英特尔的GPU软件,那么会有这个快捷键冲突 就是快速复制快捷键:ctrl+alt+方向键  会调用英特尔旋转屏幕,禁用掉即可 PhPStorm 是 Je ...

  6. spring jpa data笔记

    tomcat启动Maven项目的时候总抛出这样的错误: Error creating bean with name 'org.springframework.boot.autoconfigure.or ...

  7. php的一些语法

    命名空间: 一个类为App/Http/Controllers/Controller,则该类的命名空间为App/Http/Controllers,可以通过use关键字导入该类,也可以导入命名空间,但是该 ...

  8. mysql语法语句

    将一个字段中的timestamp修改成可视化时间 update table set f1 = IF( LOCATE('-',f1)>0, f1, IFNULL(FROM_UNIXTIME(f1/ ...

  9. [读书笔记] CSS揭秘-背景与边框

    半透明边框 默认情况下,背景会延伸到边框所在的区域下层.可以通过background-clip属性调整该默认行为. border: 10px solid rgba(0,0,0,.2) backgrou ...

  10. Systemd入门教程:命令篇(转)

    作者: 阮一峰 日期: 2016年3月 7日 Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置. 本文介绍它的基本用法,分为上下两篇.今天介绍它的主要命令,下一 ...