Apache-2.2
Apache:需要基本身份驗證,特定的 POST 請求除外
(RHEL 6.2、Apache 2.2.1)
我正在嘗試讓 LAMP 站點在基本身份驗證之後執行以防止一般訪問(它是仍在生產中的站點的測試環境)並且我遇到了一個問題,即多文件上傳功能失敗,因為它沒有正確處理驗證; 我可以在 Apache 日誌中看到 POST 的身份驗證已被刪除
10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /index.php/tools/required/files/import?ocID=&searchInstance=file1331694544 HTTP/1.1" 200 8558 10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.js?_=1331694608575 HTTP/1.1" 200 36807 10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.handlers.js?_=1331694608601 HTTP/1.1" 200 6443 10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.fileprogress.js?_=1331694608621 HTTP/1.1" 200 7529 10.77.34.123 - testuser [14/Mar/2012:14:10:13 +1100] "GET /concrete/js/swfupload/swfupload.queue.js?_=1331694608636 HTTP/1.1" 200 3479 10.77.34.123 - testuser [14/Mar/2012:14:10:14 +1100] "GET /concrete/flash/swfupload/swfupload.swf?preventswfcaching=1331694608650 HTTP/1.1" 200 12419 10.77.34.123 - - [14/Mar/2012:14:10:20 +1100] "POST /index.php/tools/required/files/importers/multiple HTTP/1.1" 401 488
作為一個非常快速的修復,我將 Apache 配置更改為只需要對 GET 請求進行身份驗證,而不是 POST,但從安全形度來看,這是不可取的。目前的 Apache 指令是:
<Directory /> AuthName "Priceline Portal Dev" AuthUserFile /home/dev_priceline/passwords <Limit GET> AuthType Basic Require valid-user </Limit> </Directory>
這需要基本身份驗證才能訪問站點(通過 GET),但允許 POST 通過。
我想要做的是改變它:在 URL 中包含“多個”的 POST 請求不需要身份驗證所有其他請求都需要基本身份驗證。
有沒有辦法使用 Apache 指令來做到這一點?多重上傳功能內置在所使用的 CMS 中,基本身份驗證不會在最終生產中使用,因此我不想更改上傳程式碼本身。
嗯,好醜。。
<Directory /> AuthName "Priceline Portal Dev" AuthUserFile /home/dev_priceline/passwords AuthType Basic Require valid-user </Directory> <LocationMatch .*/multiple$> <Limit POST> Satisfy Any </Limit> </LocationMatch>
因此,只允許忽略 auth 規則(假設主機被
Allow
/Deny
規則允許),只針對POST
以/multiple
. 那聲音怎麼樣?