码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-12-14 11:55:07      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:用户访问   order   cms   color   apc   dedecms   针对   正则匹配   none   

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

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

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

标签:用户访问   order   cms   color   apc   dedecms   针对   正则匹配   none   

原文地址:http://www.cnblogs.com/lovebing/p/8036759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!