Categories: WebTechinical

許可だか拒否だか allow,deny

Apacheのアクセス制限設定の基本ではあるが、なんだか考え出すとわかんなくなっちゃう人が多い。自分もそうだったので整理。

  • Order allow, deny
  • Allow from all
  • Deny from xxxxx

というパターンが割と一般的だが、これは

  • Order deny,allow
  • Deny from xxxxx

と書く場合もある。(Apacheのデフォルトは deny, allow みたいなのでこっちが普通?)

この2つが同じだよって言われると、「え?なんで?」って事なってくる。

誤解ポイントは2つ

  1. Order A,B を、 Aを評価した後に、Aでなかったものに対してBを評価すると考えてしまう。
  2. Allow, Deny の記述上の順番に意味があると思ってしまう。

例えば、一番失敗しそうな勘違いは、

  • Order deny,allow
  • Deny from xxxxx
  • Allow from all

これだと、xxxxx が、Denyで弾かれて、その他は、Allow from all で許可されるような印象を持つけど、実際は、こんな記述をしたらオール通し!になってしまう。

これでダメなら、次のはどうか!ってやってみる人もいるかもしれない。

  • Order deny,allow
  • Allow from all
  • Deny from xxxxx

Allow from all で全許可しておいて、後ろのDenyで、xxxxx だけ拒否! しかし、残念ながら、Order の事忘れちゃってますよね。記述上 Deny をAllowの前に書こうが、後ろに書こうが関係ないわけです。

    これらがうまくいかない理由は次の通り

    1. Order A,B は、 Aを評価した後に、Aだったものに対して、Bを評価する
    2. Allow, Deny の記述上の順番には意味なんかない

    つまり上の間違い例だと、 最初に deny を評価するので、 xxxxx が一旦 deny になり、それ以外は、allow になる。この allow になったものは、それ以上チェックされないので、許可。 deny になったものは、更に Allow リストでチェックされるのだが、Allow from all なので、結局 allow になってしまう。で、xxxxx も許可。 ということになってしまうわけです。

    from all という記述がよく見られるのは、「とりあえず全部許可」とか「とりあえず全部拒否」みたいな意思を明確にする意図があって、フィルタ設定では、そういう明示的な設定が推奨されるからだと思いますが、Apache の Order 設定だと、処理的には、「とりあえず全部許可、だけど、やっぱ xxxxx はダメ」みたいな感じで、処理的にはややこしくなってしまう。日本はOKだけと、北海道はダメみたいな設定をしたい場合には必須の設定なんだけど、私的には、from all を使うより、Order をヒックリ返して Deny だけ書くとか Allow だけ書く方がわかりやすいような気もします。

    正しくはありませんが、とりあえず、「Order deny, allow」を、「deny でなければ、allow(なのでDenyだけ書けば良い)」と読んでしまうのも手かもしれませんね。

    はじめ

    Share
    Published by
    はじめ

    Recent Posts

    米国株の評価損益はドルで確認

    インデックスの長期だと、評価損…

    3週間 ago

    ずぼら投資の為に

    老後資金のための株式投資 私が…

    3週間 ago

    AIの母なる大地 NVIDIA

    今日、8月28日は、世界中が注…

    3週間 ago

    長期積み立て投資の意味と平均購入価格

    自分のコア投資がS&P…

    4週間 ago

    家計簿に株式投資分をどのように記載するか

    家計簿は自分の持っている資産を…

    4週間 ago

    いくつか学んだ事

    インデックスは一つに絞る NI…

    4週間 ago