パスワードでアクセス制限するには

とほほのWWW入門 > アラカルト > パスワードでアクセス制限するには
2000年3月14日版
特定の人にだけ見せたいページを作成するためのノウハウについて紹介します。

秘密のURLをパスワードにする方法

特定の人にのみファイル名やフォルダ名を教えることでパスワードの代わりにします。例えば、HIMITSU.html というページをこっそり作っておいて、どのページからもリンクを張らず、特定の人にだけそのURLを教えるという方法です。URLを直接入力させるのが嫌なら、次のようなフォームから入力させる手もあります。

<FORM onSubmit="document.location.href=
this.PW.value + '.html'; return false">
<INPUT TYPE=password NAME="PW">
<INPUT TYPE=submit VALUE="OK">
</FORM>

WEBサーバーのチェック機能を用いる方法(Apache)

WEBサーバーが NCSA httpd や Apache の場合でかつ、プロバイダが .htaccess の使用を有効にしている場合は、以下に述べる方法でパスワードチェックすることができます。

ここでは、http://www.xxx.zzz/~tanaka/himitsu/ で始まるURLに対してアクセスするとユーザー名とパスワードを求め、tarou 君は ta-ro-u というパスワードで、hanako さんは ha-na-ko というパスワードでアクセスできるようにするための設置例を示します。

まず、himitsu ディレクトリの下に .htaccess というファイルを設置してください。内容は次のようにしてください。FTPでファイル転送する場合は必ずテキストモードで転送してください。

AuthType Basic
AuthName HimitsuPage
AuthUserFile /home/tanaka/.htpasswd
Require user tarou
Require user hanako

AuthTypeには Basic を指定してください。

AuthNameにはパスワード入力ダイアログに表示される適当な文字列(英字)を指定してください。

AuthUserFileには、次で説明する .htpasswd ファイルのパス名を記述してください。 セキュリティ確保のため、サーバー上の絶対パス名(→UNIX入門参照)で記述しなくてはなりません。絶対パス名はURLでのパス名とは異なりますので注意してください。絶対パス名が解らない場合はプロバイダに問い合わせてください。

Requireには、パスワードをチェックする際のユーザー名(半角文字)を列挙します。「user tarou」の代わりに「valid-user」と記述すると、AuthUserFileで指定したファイルに記述されたすべてのユーザーを指定したことになります。

次に、.htaccess とはどこか別のディレクトリに .htpasswd という名前のファイルを設置してください。 可能であれば、ブラウザから絶対にアクセスできない場所(public_html ディレクトリの外など)に置くのが望ましいです。 内容は次のようにしてください。 FTPでファイル転送する場合は必ずテキストモードで転送してください。

tarou:2TZwLPP6fQYm2
hanako:rV8onP8a3xyeQ

ユーザー名とコロン( : )の後には、暗号化されたパスワードを記述します。暗号化されたパスワードを得るには、NCSA httpd や Apache に添付されている htpasswd コマンドを用いたり、Windows用フリーソフト、An HTTPDの、[Options]→[General]→[AccessControl]→[User/Password]→[Add]を用いる方法があります。

以上で設置は完了です。 ここでは、各ディレクトリに対するアクセス権を設定する方法について述べましたが、サーバーの管理者であれば、サーバーコンフィグレーションファイルにより、もっと厳重にパスワード制限することができます。サーバーのマニュアルを参照してください。

また、前述同様、.htaccess ファイルに以下のような記述を行うことにより、特定のホストからしかアクセスできないような制限をかけることも可能です。

Order deny,allow
Deny from all
Allow from xxx.or.jp

order行は、次に続く行のうち、deny行、allow行の順番で評価することを意味します。order行を省略した場合は、deny、allowの順で評価されます。

deny行は、アクセスを禁止するホストを記述します。allはすべてのホストを意味します。

allow行は、例外として xxx.or.jp で始まるホストからのアクセスを許可しています。 DNSによる名前解決ができない場合はIPアドレスを指定することも可能です。

WEBサーバーのチェック機能を用いる方法(IIS)

私もWindows NTのIISについてはよく知らないのですが、Windowsのアカウントとリンクさせたユーザ名で各ページのパスワードチェックを行う方法があります。詳細はIISのマニュアルを参照してください。

パスワードチェックを行う場合の注意

人様のパスワードを預かる場合、セキュリティには充分注意してください。多くの人は同じパスワードを使いまわしています。あなたの管理している人様のパスワードが第三者に漏れた場合、それは、あなたのサービスが不正使用されるだけでなく、人様の他のサービス(例えば重量課金接続)までもが不正使用される可能性があることに注意してください。

Copyright (C) 1996-1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwxx007.htm