Apache拦截HTTP请求

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

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

1
2
3
4
5
6
7
[text] view plain copy print ?
  1.   
  2.   
  3.     #禁止DELETE TRACE OPTIONS请求  
  4.     Order allow,deny  
  5.     Deny from all  
  6.   
  7.   

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

1
2
3
4
5
6
7
[text] view plain copy print ?
  1.   
  2.   
  3.     #禁止除GET POST HEAD以外的请求  
  4.     Order allow,deny  
  5.     Deny from all  
  6.   
  7.   

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

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

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

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

你可能感兴趣的:(Linux)