web-dev-qa-db-ja.com

Apache Satisfyディレクティブは何をしますか?

理解できないhttpd.confディレクティブに出くわしました。

<Files ~ "^\.ht">
  Order allow,deny
  Deny from all
  Satisfy All
</Files>

doc によると、Satisfyがないため、Allowは効果がないと言えます。私が間違っている?この指令は何をするのだと思いますか?

9
user41565

私はあなたに同意します、すべてを満足させることは何もしていません-それなしでは、これらのファイルはまだ拒否されます。

0
AliGibbs

TLDR;
Satisfy All通常デフォルトのサーバー設定であるため、ほとんどの場合、この行は厳密には必要ありません。 の場合、この行は厳密には必要ありません。

この行は追加のセキュリティとして追加され、「JustInCase」サーバーはデフォルトとしてSatisfy Any設定を使用するように構成されました。
Satisfy Any設定を使用してサーバーを意図的に設定した場合は、ファイルを保護するためにSatisfy Allディレクティブを含めることにより、その設定を上書きすることを間違いなく want .htaccessなど。

Htaccessファイルがサーバーのデフォルトの「Satisfy」ディレクティブを上書きするかどうかはわかりません。

インターネットに投稿された一般的なコードの場合、特に.htaccessファイルを適切に保護する方法を説明している場合、投稿者は、サーバー設定について、弱体化する可能性のある仮定を行わない責任があります。ドキュメントのセキュリティ。その「余分な」行を含めると、より安全な設定がhtacessファイルに確実に適用されます。ディレクティブを追加すると、異なる構成のサーバーの小さなセットに対して、htaccessファイルが公開される可能性を失う代わりに、コードブロックが100%動作します。

Apacheドキュメント によると:

Satisfy Any|All

ホストベースのアクセス制限とパスワードベースの認証の両方を同時に実装できます。その場合、Satisfyディレクティブは、2セットの制限がどのように相互作用するかを決定するために使用されます。

...<Directory><Files>、および<Location>セクションと.htaccessで使用

このディレクティブは、特定の領域へのアクセスがユーザー名/パスワードとクライアントホストアドレスの両方によって制限されている場合にのみ役立ちます。この場合、デフォルトの動作(すべて)では、クライアントがアドレスアクセス制限を通過し、有効なユーザー名とパスワードを入力する必要があります。 Anyオプションを使用すると、ホスト制限に合格するか、有効なユーザー名とパスワードを入力すると、クライアントにアクセスが許可されます。

デフォルト値通常Satisfy All(他の唯一のオプションはSatisfy Any)であるため、そのディレクティブを含めても違いに気付かない場合があります。ただし、サーバー構成ファイル(または?親ディレクトリの.htaccessファイル??-これが可能かどうかわからない)は、サーバーのデフォルトを上書きする可能性があります。いずれにせよ、Satisfy Allディレクティブを追加すると、適切なセキュリティ対策が一貫して適用されます。

Satisfy Allディレクティブを含めることにより、サーバー構成の設定に関係なく、これらのファイルのより高いセキュリティ設定を保証します。

ドキュメントへのリンクは、代わりにSatisfy Anyを使用したい場合のいくつかの使用例について言及しています。

3
SherylHohman

コメントできないので、@ SherylHohmanの回答が最良の回答であることをここに追加します。これは、セキュリティを強化するために重要であるためです。したがって、stillが残りの部分を説明する必要があるため、(受け入れられた回答とは対照的に)それなしでは効果がないと言うことは技術的に正しくありませんサーバー構成の。ただし、@ SherylHohmanの回答に追加したいと思います。

  1. サーバー構成ファイル(例:/etc/httpd/conf/httpd.conf)には、より一般化されたSatisfy Anyステートメントを含めることができます。たとえば、誰かがサーバー上のすべてのサイトにアクセスするためにユーザー名/パスワードを要求し(Require group [name経由など)、特定のIPまたはIPのセットからAllow from [ip]経由でバイパスを許可する可能性があるため、これは重要です。アウトでは、.htaccessを宣言する必要があるため、Satisfy Anyが開かれます。

  2. ディレクトリ以上特定の.htaccessファイルは影響を与えませんそれらが<Files>に特に一致する.htaccessセクションである場合を除きます。このルールは、必要なAllowOverrideディレクティブ(例:LimitまたはAll)も含むサーバー構成とともに使用されます。これはサーバー構成で使用されるものであり、<File>レベル(つまり、ルートレベル<Directory>)の後に処理されるため、.htaccessである必要があると言います。これは <File>セクションが後でマージされる であり、.htaccessは当然サーバー構成の後に処理されるように見えます。

1
chunk_split