1

次の構文を使用して、.htaccess ファイルから一部の IP をブロックしています。

DirectoryIndex index.php
order allow,deny
deny from 17.18.19.0
deny from 18.17.19.1
allow from all

そして今、これを使用できるかどうかわかりません:

DirectoryIndex index.php
order allow,deny
deny from 18.17.19.1
allow from all
deny from 18.15.19.1
allow from all
deny from 18.18.19.1
allow from all

この構造を繰り返してもいいですか?

deny from x.x.x.x
allow from all

なぜ私は尋ねているのですか?ファイルの最後に Append deny from だけの php スクリプトを見つけたので、「 allow from all 」行が必要かどうかわかりません。

このままでいいの?

DirectoryIndex index.php
order allow,deny
allow from all
deny from 17.18.19.0
deny from 18.17.19.1
deny from ... etc.
4

1 に答える 1

2

まず第一に、このドキュメンテーション ページは物事をうまく説明しています。

次の引用は、mod_authz_host のドキュメントからのものです。

Order ディレクティブは、Allow および Deny ディレクティブと共に、3 パス アクセス制御システムを制御します。最初のパスは、Order ディレクティブで指定されているように、すべての Allow ディレクティブまたはすべての Deny ディレクティブを処理します。2 番目のパスは、残りのディレクティブ (Deny または Allow) を解析します。3 番目のパスは、最初の 2 つのいずれとも一致しないすべての要求に適用されます。

最初の一致のみが使用される一般的なファイアウォールとは異なり、すべての許可および拒否ディレクティブが処理されることに注意してください。最後の一致が有効です (典型的なファイアウォールとは異なります)。さらに、構成ファイルに表示される行の順序は重要ではありません。すべての許可行は 1 つのグループとして処理され、すべての拒否行は別のグループと見なされ、既定の状態はそれ自体で考慮されます。

つまり、 がある場合Order Allow,Deny、最初にすべてのディレクティブを処理しAllow、次にすべてのDenyディレクティブを処理します。ディレクティブが 1 つであろうとAllow from all100 個であろうと、問題ではないことはおそらく理解できるでしょう。Allow from all最終的な結果は同じですが、これらのディレクティブが 100 個あると、サーバーの処理にさらに時間がかかります。次に、すべての拒否ディレクティブを処理し、必要に応じて与えた許可を上書きします。

したがって、必要なOrder Allow,Denyディレクティブは 1 つだけであり、ディレクティブも 1つだけAllow from allです。使用しているスクリプトが何であれ、Deny適切と思われるディレクティブを追加するだけで、すべてが期待どおりに機能します。

于 2014-06-28T13:54:03.447 に答える