トップ «前の日記(2009-09-07) 最新 次の日記(2009-09-10)» 編集

2009-09-08 [長年日記]

_ Apache の Satisfy は And/Or だったか

core - Apache HTTP サーバ

Allow と Require の両方が使われているときの アクセスポリシーを設定します。パラメータは All か Any です。このディレクティブはある場所へのアクセスがユーザ名/パスワード とクライアントのホストのアドレスで制限されているときにのみ 役立ちます。デフォルトの動作 (All) はクライアントがアドレスによる アクセス制限を満たし、かつ正しいユーザ名とパスワードを入力することを 要求します。Any では、クライアントはホストの制限を満たすか、 正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。 これは、ある場所をパスワードで保護するけれど、特定のアドレスからの クライアントにはパスワードの入力を要求せずにアクセスを許可する、 というようなときに使用できます

ということは

AuthType ...
Require ...

Order deny,allow
Deny from all
Allow from IP_ADDR
Satisfy Any

にすると、

特定の IP アドレス以外からのアクセスは認証を要求される

という形になるわけだ。Satisfy のとる値は All か Any なんだけど、これはアクセスを許可するための条件が And になるか Or になるかの違いなんだなと思ったら急に分かりやすくなった。

実際には特定のユーザーにだけアクセスを許可する場合はそのユーザーが固定 IP を持ってて、それに該当しないユーザーは丸ごと 403 の方がスマートなんだけど、なかなかそうもいかんわね。少なくとも URL がバレていないのならこの形で我慢するのが現実的か。

Tags: Apache