Apache拦截HTTP请求

转载 2014年07月07日 10:01:57
有些时候,为了保证Web应用的安全性,可以选择在Apache服务器中将一些危险的HTTP请求过滤,例如DELETE请求,也可以将系统不作处理的无效请求过滤,例如TRACE、OPTIONS请求,以防入侵者发送大量请求给服务器,造成系统负担。

Apache服务器可以通过修改http.conf文件来达到上述目的。Apache核心指令中,<Limit>/<LimitExcept>配置段用于对指定的HTTP方法进行访问控制,<Directory>/<Files>/<Location>配置段则是用于将它们封装起来的指令集作用于指定的目录、文件或网络空间(详见《Apache核心(Core)指令<Location>和<Directory>区别》)。因此,将<Limit>/<LimitExcept>配置段和<Directory>/<Files>/<Location>配置段联合起来,就能实现Apache对指定HTTP请求进行访问控制的功能。它们的配置形式(以<Directory>和<Limit>/<LimitExcept>说明)可以表示如下:

1
2
3
4
5
6
7
  1. <Directory "C:/apache/www">  
  2. <Limit DELETE TRACE OPTIONS>  
  3.     #禁止DELETE TRACE OPTIONS请求  
  4.     Order allow,deny  
  5.     Deny from all  
  6. </Limit>  
  7. </Directory>  

上述配置表示,对于任何用DELETE、TRACE、OPTIONS方法访问C:/apache/www目录里资源文件的请求都会被apache服务器拒绝(403 Fobidden)。还可以这样表示:

1
2
3
4
5
6
7
  1. <Directory "C:/apache/www">  
  2. <LimitExcept GET POST HEAD>  
  3.     #禁止除GET POST HEAD以外的请求  
  4.     Order allow,deny  
  5.     Deny from all  
  6. </Limit>  
  7. </Directory>  

这段配置表示,对于任何用GET、POST、HEAD方法访问C:/apache/www目录里资源文件的请求都会被apache服务器拒绝(403 Fobidden)。相当于前一个(<Limit>)是黑名单策略,后一个(<LimitExcept>)是白名单策略。

为方便测试,可以用Telnet模拟HTTP请求来对配置进行验证:
1、模拟GET请求,HTTP返回码为200 OK,表示GET请求正常执行,如下图所示:

2、模拟DELETE请求,HTTP返回码为403 Forbidden,表示DELETE请求被禁止,如下图所示:

关于这段配置有两点需要注意的地方:
1、配置完http.conf文件后,必须重启apache服务,配置才能生效。
2、<Limit>/<LimitExcept>配置段里的Order、Allow、Deny指令需加载mod_authz_host.so模块,否则无法使用[1]

HTTP方法 谓词 及在nginx中如何关闭(limit_except)

记录一下,以备查阅: HTTP方法 评估结果 建议 说明 解决方案 HEAD  安全   无  除了服务器不能在响应中返回消息体,HEAD 方法与 G...
  • KimSoft
  • KimSoft
  • 2012年11月05日 09:41
  • 9092

使用apache的ab压力测试时失败请求原因

网上一个论坛上找到的,地址http://bbs.51testing.com/viewthread.php?tid=204192 只要出现 Failed requests 就会多出现一行要求失败的各原因...
  • jianfyun
  • jianfyun
  • 2011年05月23日 10:27
  • 6307

Apache与浏览器之间的并发,连接,请求

并发(并发数量):就是apache的并发数量,更直接就是apache为了处理用户请求开启的进程数量,简单理解就是apache的进程数量。 连接(TCP连接):apache和浏览器之间是通过TCP/I...
  • ajaxuser
  • ajaxuser
  • 2012年07月30日 14:23
  • 2002

Apache2.4.9本地访问正常但是在局域网或外网IP拒绝访问

Apache2.4.9本地访问正常但是在局域网或外网IP拒绝访问
  • u013032788
  • u013032788
  • 2016年05月13日 15:30
  • 8521

(tomcat一闪而过)localhost拒绝了我们的连接请求原因及解决方案

1、localhost拒绝了我们的连接请求的原因: tomcat启动不了。而且启动tomcat时,发现黑色命令行窗口一闪而过,且web服务并没有启动起来 2、找出原因tomcat一闪而过:...
  • jiajia199470
  • jiajia199470
  • 2016年11月09日 16:54
  • 13296

Apache通过代理拦截请求

httpd.conf文件配置 1.打开相应配置 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balance...
  • u010192023
  • u010192023
  • 2016年01月13日 11:32
  • 103

Apache HTTP Server使用指南

  Apache HTTP Server使用指南1       修改历史 版本 ...
  • thunder4393
  • thunder4393
  • 2007年08月07日 17:11
  • 11590

如何保证HTTP接口请求的安全呢?

在二家公司负责后台开发与APP接口开发。 那我们要如何对接口请求进行一个安全校验或者拦截非法请求呐? 1、选择拦截过滤器。 在请求的时候对请求方法进行一次拦截处理。比如非正常访问的方法已经注入插...
  • fjnpysh
  • fjnpysh
  • 2017年03月19日 00:59
  • 2368

加强对HEAD 请求的处理(转贴)

加强对HEAD 请求的处理 最近发现有些搜索引擎爬虫在抓取数据的时候,先是通过一个HEAD 请求获取response的header 信息,然后再通过GET 请求获取response 的body信息(即...
  • yujun00
  • yujun00
  • 2005年04月10日 12:42
  • 4013

Apache http 发送post请求,解析响应

UrlEncodedFormEntity formEntiry = null; List formParams = new ArrayList(); formParams.add(new Ba...
  • hqq1007
  • hqq1007
  • 2015年08月03日 13:46
  • 337
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Apache拦截HTTP请求
举报原因:
原因补充:

(最多只允许输入30个字)