アクセス制限(Order,Allow,Deny)を設定する

htaccess_access_limit_top

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

.htaccessによるアクセス制限

サイトを運用していると特定のフォルダやファイルへのアクセスを制限したいときがあります。Apache のモジュール「mod_access_compat」には保有する全てのファイルを対象にして、.htaccess によるアクセスの制限を設定する機能が備わっています。

本記事では、.htaccess 内でも特にアクセス制限を設定する方法を確認していきます。

 

.htaccess の基本的な記述方法

まずは次の記述をご覧ください。

.htaccess にてアクセス制限の基本的な記述は上記のような内容となります。

 

Order:アクセス制限を行う順番

アクセス制限を設定するときは、許可と拒否を組み合わせながら自分が望む制限を行います。その中で許可と拒否の順番を設定するための命令が「Order」です。

order 命令は上記の2種類しかありません。許可してから拒否する「Order allow,deny」を設定したときは、以降に allow を書いて、そのあとに deny の設定を記述します。反対に拒否してから許可する「Order deny,allow」を設定したときは、以降に deny を書いて、そのあとに allow の設定を記述します。
※正確には他にも「Order Mutual-failure」がありますが、「Order allow,deny」と全く同じ効果のため非推奨となっているため今回は説明を省きます。

各order設定したときの結果

マッチ/設定 allow,deny設定時 deny,allow設定時
allowのみマッチ 許可 許可
denyのみマッチ 拒否 拒否
どちらにもマッチしない 拒否(※1) 許可(※1)
両方ともマッチする 許可(※2) 拒否(※2)

(※1)2番目に記述した命令がデフォルトになる
(※2)最後にマッチしたほうが有効になる

 

Allow / Deny:アクセスできるユーザーの制御

許可を設定するときに指定するのが「Allow」、拒否を設定するときに指定するのが「Deny」のディレクティブです。

設定できるものは次のようなものです。

 

all
「all」を設定したときは全ての接続が対象となります。

 

ドメイン名(ホスト名)
ドメイン名(ホスト名)を設定したときは、記述したホスト名からの接続が対象となります。アクセス元のIPからホスト名を調べて、対象のホスト名のときは後方一致で適用されます。

 

IPアドレス
IPアドレスを設定したときは、記述したIPアドレスをもった接続が対象となります。

IPアドレスのときはサブネットマスクを設定することもできます。

[192.168.1.0/24]は「192.168.1.0~192.168.1.255」までの256個のIPアドレスを示します。

 

IPアドレスによる限定公開

.htaccess のアクセス制限を行うときに需要が多いのが、開発中のサイトやテスト環境は関係者だけアクセスできるようにしたい!という需要ではないでしょうか。

そこで需要が多い IPアドレスによる限定公開のサンプルを載せておきます。

もしIPアドレスを複数設定したい時は、「Allow from [IPアドレス]」を次の行に追記すれば接続先は簡単に追加できます。

 

さいごに

アクセス制限としては有名な Order や Allow、Deny は、Apache2.4.8から非推奨となりました。

代わりに「mod_authz_host」によるアクセス制限を実装することになるようです。また別記事にしたいとは思いますが、気になる方は下記に公式サイトへのリンクを貼っておきますので確認して下さい。

アパッチ公式サイト:Apache Module mod_authz_host
https://httpd.apache.org/docs/2.4/ja/mod/mod_authz_host.html

 

 

ウェブプログラミングについては下記の本も参考になるので、スキルアップにお役立てください。

徳丸 浩(著)
ページ数: 688ページ
出版社:SBクリエイティブ
発売日:2018/06/21

出典:amazon