web-dev-qa-db-ja.com

Apache:特定のPOSTリクエストを除いて、基本認証が必要です

(RHEL 6.2、Apache 2.2.1)

一般的なアクセスを防ぐために基本認証の背後でLAMPサイトを実行しようとしています(これはまだ本番環境にあるサイトのテスト環境です)。複数ファイルのアップロード機能が正しく処理されていないために失敗するという問題が発生しました。認証; POSTの認証がドロップされていることがApacheログで確認できます

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の構成を変更して、POSTではなくGETリクエストの認証のみを要求するようにしましたが、セキュリティの観点からは望ましくありません。現在のApacheディレクティブは次のとおりです。

<Directory />
  AuthName "Priceline Portal Dev"
  AuthUserFile /home/dev_priceline/passwords
  <Limit GET>
    AuthType Basic
    Require valid-user
  </Limit>
</Directory>

これは、(GETを介して)サイトにアクセスするために基本認証を必要としますが、POSTを許可します。

私がやりたいのは、次のように変更することです。POST URLに「複数」を含むリクエストは認証を必要としません他のすべてのリクエストは基本認証を必要とします。

Apacheディレクティブを使用してこれを行う方法はありますか?複数のアップロード機能が使用されているCMSに組み込まれており、基本認証は最終的な本番環境では使用されないため、アップロードコード自体を変更したくありません。

4
DrStalker

まあ、それはかなり醜いです..

<Directory />
    AuthName "Priceline Portal Dev"
    AuthUserFile /home/dev_priceline/passwords
    AuthType Basic
    Require valid-user
</Directory>
<LocationMatch .*/multiple$>
    <Limit POST>
        Satisfy Any
    </Limit>
</LocationMatch>

したがって、/multipleで終わるAllowリクエストに対してのみ、認証ルールが無視されることを許可します(ホストがDeny/POSTルールによって許可されていると仮定します)。 、ログにあるものと同じように。その音はどうですか?

5
Shane Madden