.htaccess で特定のファイルのみにBasic認証を設定する方法
今回の記事は、以前旧ブログから転載してきた.htaccessによるBasic認証のかけ方の続編です。
.htaccess とは
Webサーバー(Apache)の挙動を、ディレクトリ単位で指定するための設定ファイルです。
「.htaccess」という名前のテキストファイルを、該当ディレクトリにFTPでアップロードしたり、TelnetやSSH等でログインして、vi 等のエディタで直接作成・編集すればOKです。
.htaccess を設置すると、そのディレクトリと、その下層に位置する全てのディレクトリに、.htaccess で指定した設定が反映されます。
Basic認証とは
特定のディレクトリやファイルに対するアクセスに対して、CGI等の動的なコンテンツを用いることなく、ユーザー名とパスワードを要求して認証を行うことのできる手法です。
Webサーバー側の機能として提供される認証方法なので、プログラミング等の知識を必要とせず、比較的簡単にユーザー認証を行なうことが出来ます。
Basic認証のかけられたディレクトリやファイルにアクセスすると、ユーザー名とパスワードを入力するためのダイアログが表示され、正しいユーザー名とパスワードを入力しないと、そのディレクトリやファイルを閲覧することができません。
ディレクトリ単位での、基本的なBasic認証のかけ方に関しては、前述の記事.htaccessによるBasic認証のかけ方を参照のこと。
今回は、さらにもう一件、先日旧ブログから転載してきた記事、特定のファイルに対するアクセス制限と組み合わせて、「特定のファイルのみに Basic認証をかける」という応用編です。
特定のファイルのみに Basic認証をかける
例えば、今ご覧になっているこのブログを管理している Movable Type をはじめとする、Web上で管理を行なうCMSの管理用CGI。
当然ながら、インターネット上で管理していますから、管理者用のログインフォームには、URLさえわかれば誰でもアクセスできるわけです。
もちろん、そこから先の画面には、ユーザー名やパスワードを入力してログインするので、誰でも見られるわけではないですが、この管理者用のプログラムだけに Basic認証をかけることができれば、よりセキュリティの強度は高まります。
その他にも、サイトの構成上の都合によって、ディレクトリ単位ではなく、ファイル単位で Basic認証をかけたい、というケースは、意外とあるかと思います。
ちょっとおさらいしておくと、まず基本的な Basic認証のかけ方は、
AuthUserFile /home/amethyst/data/pass/password.dat AuthName "Input Your Name And Password" AuthType Basic require valid-user
こんな感じです。
それぞれの項目の詳細については、.htaccessによるBasic認証のかけ方を参照してください。
そして、基本的なファイル単位でのアクセス制限の方法は、
<Files filename>
order deny,allow
deny from all
</Files>
という感じです。
こちらも詳細は、特定のファイルに対するアクセス制限を参照してください。
ここでのミソは、
- 「require」で指定したユーザーに対して Basic認証を行う
- 「<Files>~</Files>」で指定したファイルに対してアクセス制限を行なう
という2点です。
つまり、該当ディレクトリ内のファイルの中で「admin.cgi」というCGIスクリプトだけに Basic認証をかけたい、という場合、
AuthUserFile /home/amethyst/data/pass/password.dat
AuthName "Input Your Name And Password"
AuthType Basic
<Files admin.cgi>
require valid-user
</Files>
と書けば良いわけです。