アクセス制御

利用者を限定した情報公開の方法について説明します。

IPアドレスによる方法

インターネットにつながったパソコンにはIPアドレスという番号が振られています。 例えばあなたのIPアドレスは 54.224.102.26 です。

三重大学からしか見られたくないものは,そのディレクトリに .htaccess というファイルを作り,その中に次のように書いておきます。

deny from all
allow from 133.67

Windowsでの作業の注意を書いておきます:

三重大学の学内には 10.* というプライベートアドレスのパソコンも多数ありますが,サーバの手前で 133.67.* にアドレス変換(NAT)されるようになっています。

自宅から見る場合には,自宅のIPアドレスを調べて,allow from ... の行を追加します。

別の例として,特定のホスト以外から掲示板等への書き込みを禁止するには次のようにします。

<LimitExcept GET>
    deny from all
    allow from 良い人のIPアドレス
</LimitExcept>

パスワードによる方法

あるフォルダ以下のものを見るときにパスワードを聞いてくるようにしてみましょう。

そのための方法には,古いBasic認証と,より新しいDigest認証があります。Basic認証は(SSLなどを使わない限り)パスワードが平文でネットを流れますので,以下ではDigest認証について解説します。 Digest認証は,Apache 2では標準で対応していますが,古いApacheではmod_auth_digestというモジュールが必要です。 ブラウザはあまり古いものは対応していません。 IEなら5以降が必要です。 FirefoxやSafariはすべて大丈夫です。

まず,アクセス制御したいディレクトリに次のような .htaccess というファイルを作ります。

AuthType Digest
AuthName "himitsu no basho"
AuthUserFile /home/hoge/.htpasswd
Require valid-user

AuthName は,場所の名前で,パスワードを打ち込む窓に表示されます。 "..." で囲んで書きます。

AuthUserFile は,ユーザ名とパスワードを書き込んだファイルのフルパスです。 外から見えないところに置くのが好ましいのですが,外から見えるところに置かなければならない場合は,.htpasswd のように .ht で始まる名前にします。 なお,Apache 2.2 になる前は AuthUserFile ではなく AuthDigestFile と書きました。

次に,htdigest のページでユーザ名(name),場所の名前(realm,上のAuthNameに相当),パスワード(pass)を入力し,出力される行を AuthUserFile で指定したファイルに入れます。 複数のユーザがいる場合には,複数の行を入れます。

このようにして作った 秘密の場所 に入ってみてください。 ユーザ名は hoge,パスワードは geho です。

この方法では,ブラウザを閉じるまでずっとログインの状態が続きます。 特にセッション管理がされるわけではなく,ブラウザが毎回自動的にパスワード(のハッシュ値)を送っているだけです。 ログアウトするには,ブラウザを閉じなければいけません(Mac では窓を閉じるだけでは駄目で,ブラウザを終了する必要があります)。

注意

上記のようなアクセス制御をしても,Webサーバにログインできるユーザは,直接あなたのファイルを読むことができるかもしれません。 ログインできなくても,CGIやPHPなどをうまく使ってパスワードを回避することができるかもしれません。 本当に秘密のファイルは共同利用のサーバには置かず,自前のWebサーバを立てるほうが安全です。

PHPを使えば,よりきめの細かなアクセス制御ができます。


奥村晴彦

Last modified: 2008-08-10 21:36:42