昨日こんなツイートをしました。このツイートを見ただけじゃベーシック認証の書き方などわからないとおもいます。ので今回はもう少し深堀していこうと思います。
ベーシック認証について
— Tomoya (@div_tomo) August 21, 2023
簡単に言うと
HTTPを用いた通信で扱うことのできるシンプルなユーザー認証方式のこと
htaccessの認証機能を利用することで、特定のURL(配下)にアクセスした場合、ページの表示前にパスワード認証機能をかける事ができる#ベーシック認証 #プログラミング
htaccessによるベーシック認証
htaccessの認証機能を利用することで、特定のURLにアクセスした場合、ページの表示前にパスワード認証機能を設けることができます。
この機能によりアクセス制限することで、セキュリティーを高めることができます。
フォルダを作成
まずは app フォルダを作成しその中に approval.php ファイルを作成していきます。
app
|
|-----> approval.php
今回は .htacsece で書いていきます。
.htacsece はアクセス制限がかかってくるので、あらかじめ必要な情報を記載する必要があります。それが以下の2つになります。
必要な情報
・パスワードを記録したファイルの場所・実際のパスワード(暗号化)
パスワードを記録したファイルの場所
echo __FILE__;
これでファイルの場所を表示することができます。
一応 echo
で表示したファイルパスをコピーしておきましょう。自分の場合は以下
実際のパスワード(暗号化)
$password = 'SuTomSun0218';
//第一引数実際のパスワード //第二引数でパスワードの暗号化
echo (password_hash($password, PASSWORD_BCRYPT));
まずパスワードとなる変数$password
を用意して 'SuTomSun0218'
というパスワードを入れてあげます。
今回は password_hash
を使って暗号化していきます。
第1引数には実際のパスワードを入れます。今回は$password
第2引数にはパスワードの暗号をしてくれる PASSWORD_BCRYPT
を記載してあげています。
出力内容
$2y$10$9wY4taTKF0duyFBa5Kd5VObinepvtqn9l4FKrWNEEvVLemmSOT/nO
実際に確認してみると暗号化されていることがわかりますね。
ファイルを作成
app フォルダ 内に .htaccess
と .htpasswd
というファイルを作成してください。
app
|
|-----> approval.php
.htaccess //追加
.htpasswd //追加
[ . ]ドットをつける事で隠しファイルという扱いになります
htaccessでベーシック認証するための書き方
app > .htaccess
AuthType Basic
AuthName "IDとパスワードを入力してください"
AuthUserFile D:\xampp\htdocs\test\app\.htpasswd
require valid-user
説明
AuthType Basic
と書くことでベーシック認証がかかることになります。
AuthName "IDとパスワードを入力してください"
表示する文字
AuthUserFile D:\xampp\htdocs\test\app\.htpasswd
パスワードを保管しているファイルのありかを示している。
先ほど パスワードを記録したファイルの場所 でコピーしたファイルパスを記載してください。
最後の approval.php を消して .htpasswd に変えてあげればパスワードを保管しているファイルのありかを示す事ができます。
require valid-user
//改行いれてね
としてあげると認証したユーザーだけが中に入れるようになります。
最後にEnterで改行するようにしてください。
.htpasswdの書き方
ID:パスワードの形で書いていく必要があります。
admin:$2y$10$9wY4taTKF0duyFBa5Kd5VObinepvtqn9l4FKrWNEEvVLemmSOT/nO
説明
IDが admin
パスワードが、先ほど 実際のパスワード(暗号化) でechoを使用し表示した暗号化されたパスワードを貼り付けてください
実際にログインしてみる
URL
http://localhost/test/app/approval.php
ユーザー名 admin
パスワード SuTomSun0218
※この記事と同じであれば上の記述で問題ない
ログイン後 app > approval.php に遷移すればログイン成功です。