.htaccessでベーシック認証
公開前のWebサイトなどに簡単なアクセス制御として、「.htaccess」でベーシック認証を利用している方も多いのではないでしょうか?
簡単に「.htaccess」を作成できる「.htaccess Editor」なんて便利なツールもあるので、ひとつひとつの詳しい意味が分からなくても簡単に認証をかけることができますよね。
…が、何かの時に役立つかもしれないので、この「.htaccess Editor」で作成されたファイルの意味を解説したいと思います。
まず、「.htaccess Editor」で、作成した「.htaccess」に記述する内容が以下です。
ユーザー名、パスワードともにichikawaで作成いたしました。
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/foo/bar/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow
まずは1~3行目。
<Files ~ "^.(htaccess|htpasswd)$">
deny from all
</Files>
こちらは、「「.htaccess」「.htpasswd」というファイルは、すべてのアクセス(all)を拒否(deny)する。」という意味です。
次に4行目。
AuthUserFile /home/foo/bar/.htpasswd
これはユーザー名とパスワードが書かれた.htpasswdファイルの絶対パスが記入されています。
.htpasswdファイルは、可能であればドキュメントルートより上の階層(ブラウザからアクセスできない領域)に置くのが望ましいです。
AuthGroupFile /dev/null
こちらはグループごとのアクセスを制御している部分です。
この記述は、グループごとでのアクセス制限はしないという意味です。
AuthName "Please enter your ID and password"
ここで指定された文字列が、認証の際に出てくるダイアログに出てくる文字列です。
AuthType Basic
こちらでベーシック認証を指定しています。
require valid-user
「.htpasswd」にはユーザ名とパスワードが対で書かれていますが、複数のユーザーとそのパスワードを書くことができます。
この「require valid-user 」という指定では、ユーザ名とパスワードが対で合致していればどのユーザ名でもアクセスを許可します。
もし特定のユーザ名だけを許可したい場合には、「require user ○○(例:ichikawa)」として下さい。
order deny,allow
ここでは特に指定していませんが、IPアドレスによる拒否・もしくは特定のIPアドレスのみを許可する場合などに使用します。
たとえば…
order allow,deny
allow from all
deny from 123.45.67.89
「order allow,deny」は、すべてのアクセスを許可(allow)してから、特定のIPアドレス(例:123.45.67.89)を拒否(deny)する書き方です。
反対に、特定のIPアドレスからのアクセスだけを許可する時は以下のように書きます。
order deny,allow
deny from all
allow from 123.45.67.89
上とは順番が逆です。
すべてのアクセスを拒否(deny)してから特定のIPアドレスのみ許可(allow)します。
簡単ですが、以上が「.htaccess」の解説です。より詳しいことを知りたい時はぜひ上記の本などを参照されることをお勧めします。