今回は『Basic認証』の解説をしていきます.
想像よりも簡単に作成可能ですが,簡単であるがゆえにセキュリティレベルは低いです.
解説を行ってきますが,大前提としておすすめはしません.
ただ,以下のような状況下では役に立つこともあるので知っておいて損はないでしょう.
- セキュリティについて手を動かしながら学びたい時
- 一時的に簡易的な認証システムを作成したい時
僕の場合はセキュリティの学習としてbasic認証を実際に実装してみました
今回僕が使った環境は以下の通りです.
- MAMP
- Chrome
Basic認証とは
Basic認証(ベーシック認証)とはweb上で利用可能な認証システムです.
実装することで,任意のディレクトリ内にあるファイルにアクセス制限をかけることができます.
制限をかけられたファイルにアクセスしようとすると,以下の画像のようなポップアップが表示されます.
事前に設定しておいたIDとパスワードを入力することでアクセスが可能です.
IDとパスワードの設定は後ほど解説していきます.
Basic認証の作成
Basic認証を実装するために『.htaccess』と『.htpasswd』の2つのファイルが必要です.
これらのファイルを作成し,適切に配置をすることで実装は完了となります.
『.htaccess』ファイル
まず初めに認証を設置したい階層に『.htaccess』ファイルを作成してください.
ファイルを設置したディレクトリ内が認証の範囲内となるため,下の例だと赤いマーカーのpublic-dir内が範囲内となります(pdfファイルや画像ファイルにも適用されます).
example-dir
|--public
| |--index.php
| |--.htaccess
|--other-dir
そして『.htaccess』ファイル内に以下の4行を追加してください.
AuthType Basic
AuthName "Please input your ID and password"
AuthUserFile "/Applications/MAMP/htdocs/example-dir/public/.htpasswd"
require valid-user
AuthType:Basic認証またはDigest認証のどちらかを指定します.
AuthName:ポッポアップに表示されるテキスト(半角英数字推奨).(ブラウザによっては表示されないこともあります.Safari, Firefox, Chromeでは表示されませんでした)
AuthUserFile:次で解説する『.htpasswd』ファイルの場所を書きます(フルパスです.MAMPで行う場合は上記のように書いてもらえれば動きます).
require valid-user:全てのユーザーが認証の対象になるという意味です.
フルパスの確認方法(PHP)
echo __FILE__;
『.htpasswd』ファイル
そして次に『.htpasswd』ファイルを作成してください.
配置はどこでも構いませんが,『.htaccess』ファイル内のAuthUserFileと揃える必要があります.AuthUserFileは『.htpasswd』の位置を指定しているからです.
ファイル内には以下のように記述してください.
ユーザー名1:ハッシュ化したパスワード1
複数のユーザーに許可を与えたい場合は以下のように,同じ形式で記述していけば問題ないです.
ユーザー名1:ハッシュ化したパスワード1
ユーザー名2:ハッシュ化したパスワード2
ユーザー名3:ハッシュ化したパスワード3
以下はユーザー名を『test』パスワードが『testtest』をハッシュ化した場合です.
test:$2y$10$rbZEhYK8flMytXHXtxpvtuB0FexaMaEsisWU8nosCHNILyv/jLw3q
注意点としてはパスワードはハッシュ化しないといけないという点です.
ハッシュ化されていない場合,うまく動きません.
PHPでパスワードをハッシュ化したい場合,以下のコードで出せます.
echo(password_hash('ハッシュ化したいパスワード',PASSWORD_BCRYPT));
一度実行し表示させてそれをコピペしましょう.
Basic認証実装時の注意事項
簡単に作成できるBasic認証ですが,注意点がいくつかあります.
- セキュリティレベルが低い
- なりすましのリスクが上がる
- サーバーを跨いだ制限はできない
- スマホでは認証情報が保存されない
セキュリティレベルが低いというのは冒頭でも話しました.
ブラウザにログイン情報がそのまま保存されるため盗聴された際にバレてしまいます.
また,ログイン情報を毎回送信するため,盗聴されるリスクがあがります.
Basic認証は,認証後『履歴を削除するか』または『ブラウザを閉じる』まで有効となります.
セッションなどの概念がないため,ログインし続けることができてしまいます.
よって,デスクの席を空けた際や共用のパソコンなどを使っている場合,なりすましのリスクが上がります.
これらのことから
『エラーが出る』または『ポップアップが表示されない』場合
実装がうまくできない時は以下のポイントを確認してみましょう.
- ブラウザが対応していない
- ファイルの配置場所
- パスが違う(僕は実際にここでつまづきました)
- パスワードが暗号化されていない.
上記を確認してみてください.
特にパスが違うということは多いです.
Basic認証まとめ
今回は以下の内容について解説しました.
- Basic認証とは
- Basic認証の作成方法
- Basic認証の注意事項
- エラーやうまくいかない時のチェックリスト
今回僕は学習のために実際に実装してみましたが、現在Basic認証は廃止の方向に向かっており,基本的には使わないのが無難です.
他の認証方式を使いましょう.
セキュリティを勉強したい方や一時的に簡易的な認証システムが欲しいという方は作成してみると良いと思います.
以下はDigest認証の記事です
コメント