Webサーバーでは特定のディレクトリに対してアクセス制限をかけることができます。
アクセス制限の設定方法は、Webサーバーによって異なります。本ドキュメントではUNIX上で動作するWebサーバーApacheに基いて説明します。
Apacheでのアクセス制限は、.htaccessというファイルを制限したいディレクトリの中に作成して行います33。
アクセスの「制限」は、次のように設定します。
order deny,allowこれは、今からdeny(拒否)とallow(許可)の設定をする、という意味です。
deny from host [host[ ...]]
deny行ではすべてのホストからのアクセスを拒否し、許可するホストだけallowに記述するのが一般的です。hostにallを入れると、すべてのホストからのアクセスを拒否します。ホスト名やIPアドレスを指定すると、そのホストからのアクセスのみ拒否します。複数のホストを定義する場合にはスペース文字で区切ります。また、特定ドメインのホストすべてを拒否する場合には、foo.co.jpのようにドメイン名を指定します。これにより、host.foo.co.jpやhost.bar.foo.co.jpのようなホストからのアクセスはすべて拒否されます。IPアドレスでも同様に192.168.1.と指定すると192.168.1.*のIPアドレスすべてからのアクセスを拒否します34。
allow from host [host[ ...]]
ユーザー名とパスワードを入力するダイアログボックスを表示し、ユーザー認証に成功したときのみディレクトリ内のファイルを閲覧できるようにすることもできます。
htpasswd -c パスワードファイル名 ユーザー名
登録するパスワードを聞かれるので、入力します。パスワードファイルが盗まれたときに備え、Webサーバーへのログインやメール取得の際に使うパスワードとは別のものにしておいたほうがよいでしょう。パスワードは暗号化され、ファイルに登録されます。パスワードファイル名はなんでもかまいませんが、最低限のセキュリティとして、頭に.を付けて不可視ファイルにしておいたほうがよいでしょう。
htpasswd パスワードファイル名 ユーザー名
同様にパスワードを入力します。
パスワードファイルのパスにパスワードファイルのローカルパス名を入れます。
ユーザー認証ダイアログのタイトルを指定します。
認証方式を指定します。PGPやMD5などがありますが、通常はBasicを指定します。
アクセスを許可するユーザー名のリストを記述します。ユーザーが複数いる場合、スペース文字で区切ります。パスワードファイルで登録したユーザー名をここに記述します。
ユーザーをグループ化して、このグループでアクセス制御することも可能です。
グループ名:ユーザー名[ユーザー名[ ...]]
ユーザー名の間はスペース文字で区切ります。たとえばtestというグループにユーザーkmutoとkenshiを登録する場合、test:kmuto kenshiになります。
グループファイルのパス名にグループファイルのローカルパス名を入れます。
require userの代わりにrequire groupを使います。グループ名には作成したグループ名を記述します。たとえばrequire group testのようになります。