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

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

htaccess_access_limit_top

.htaccessによるアクセス制限

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

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

Advertisement

.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アドレス]」を次の行に追記すれば接続先は簡単に追加できます。

Advertisement

さいごに

アクセス制限としては有名な 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

 

この記事が気に入ったら
いいね ! をお願いします

Twitter で

web開発カテゴリの最新記事