webサイトを作ったけど、クライアントに確認してもらうために、閲覧時にパスワードを設けて、限られた人しかみられないようにしたい!という方法のご紹介です。サーバ管理ができる方はBASIC認証ではなく、Digest認証がオススメです。
目次
wikipediaによると
Basic認証(ベーシックにんしょう、Basic Authentication)とは、HTTPで定義される認証方式の一つ。基本認証と呼ばれることも。 Basic認証では、ユーザ名とパスワードの組みをコロン ":" でつなぎ、Base64でエンコードして送信する。このため、盗聴や改竄が簡単であるという欠点を持つが、ほぼ全てのWebサーバおよびブラウザで対応しているため、広く使われている。 盗聴や改竄を防ぐため、後にDigest認証というユーザ名とパスワードをMD5でハッシュ化して送る方法が考えられた。
と記述されています。
ほとんどのブラウザで使える
セキュリティがボロボロw。パスワード等を暗号化して通信したい場合やはりSSL通信やDigest認証がよいでしょう。
まずは、あるフォルダ以下のページすべてにかけたい場合。
ファイル名(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');
アクセスして、ディレクトリパスを確認してください!
例として、サーバにおけるディレクトリパスは/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>
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です。