Apache攔截HTTP請求
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 |
[text]
view plaincopyprint?
|
上述配置表示,對於任何用DELETE、TRACE、OPTIONS方法訪問C:/apache/www目錄裡資原始檔的請求都會被apache伺服器拒絕(403 Fobidden)。還可以這樣表示:
1 2 3 4 5 6 7 |
[text]
view plaincopyprint?
|
這段配置表示,對於任何用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]