webサイトを作ったけど、クライアントに確認してもらうために、閲覧時にパスワードを設けて、限られた人しかみられないようにしたい!という方法のご紹介です。サーバ管理ができる方はBASIC認証ではなく、Digest認証がオススメです。

目次


ベーシック認証(BASIC認証)とは

wikipediaによると

Basic認証(ベーシックにんしょう、Basic Authentication)とは、HTTPで定義される認証方式の一つ。基本認証と呼ばれることも。 Basic認証では、ユーザ名とパスワードの組みをコロン ":" でつなぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。 盗聴や改竄を防ぐため、後にDigest認証というユーザ名とパスワードをMD5でハッシュ化して送る方法が考えられた。

と記述されています。

メリット

ほとんどのブラウザで使える

デメリット

セキュリティがボロボロw。パスワード等を暗号化して通信したい場合やはりSSL通信やDigest認証がよいでしょう。

記述方法

まずは、あるフォルダ以下のページすべてにかけたい場合。

パスワードをかけたいフォルダの配下にphpファイルを作り、 サーバにおける絶対パス を確認する

ファイル名(tekitoudeiiyo.php)

echo "絶対パス確認:<br>";
echo __FILE__ . '<br><br>';

echo "ディレクトリパス確認:<br>";
echo dirname(__FILE__) . '<br><br>';

echo "スクリプト名確認:<br>";
echo basename(__FILE__) . '<br><br>';

echo "指定した拡張子を取り除いたスクリプト名確認:<br><br>";
echo basename(__FILE__, '.php');

アクセスして、ディレクトリパスを確認してください!

.htaccessファイルを作成


例として、サーバにおけるディレクトリパスは/home/linux/hoge/piyo/huga/とする。
例として、ダイアログボックスに表示される名前はdevelopWEBとする。

ファイル名(.htaccess) コピペしても使えません!理解して使いましょう

AuthUserFile /home/linux/hoge/piyo/huga/.htpasswd
AuthGroupFile /dev/null
AuthName developWEB
AuthType Basic

require valid-user

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>



.htpasswdファイルを作成する


ID(ユーザ名)と暗号化されたパスワードの設定を記述します。
暗号化されたパスワードの作成方法は、こちらで作成してください。
今回は、仮にユーザ名はuser,パスワードはpasswordとします。
※絶対にuserとpassword等にしないでください!すぐクラックされます!

ファイル名(.htpasswd)

user:ninh/CwyuKDPA

以上二つのファイルをパスワードをかけたいディレクトリに二つともおけばOKです。
当然このファイルはディレクトリ構成が違うサーバではファイルの使いまわしができません!面倒でも設定するようにしましょう。

セキュリティを少しだけ上げたい場合

.htpasswdをDocumentRootのディレクトリを上に設定しておくとよいでしょう。 そして、.htpasswdのパーミッションを604にしておきましょう。
ディレクトリがある位置で

$ chmod 604 .htpasswd

と打てば、ディレクトリが変更でき、コマンドプロンプトで ls -ltaで

-rw----r--  1 ユーザ名 ユーザ名    5  5月 25 20:54 2015 .htpasswd

となればOKです。

最終更新:2015年05月25日 20:57