BASIC認証用.htaccessファイルの作り方!書き方・設定方法まとめ
2022.12.09
.htaccess を使ったBASIC認証は、ユーザーIDとパスワードでアクセス制限がかけられる優れモノ。
その反面、「サーバーに干渉する作業は気後れする…」と避けているWeb担当者も多いのではないでしょうか。
そこで今回は、BASIC認証のメリットとデメリットを踏まえたうえで、手順に沿って設定方法を解説します。
.htaccessシリーズの関連記事
BASIC認証とは?
BASIC認証とは、IDとパスワードを持っている一部のユーザーだけにアクセスを許可し、不特定多数の人が閲覧できないようにするセキュリティ機能です。
名称にベーシック(基本)という単語が入っているだけあって、「基本認証」とも呼ばれています。
BASIC認証の基本
- IP制限よりBASIC認証の方が適しているケースとは?
- BASIC認証はどんな時に使う?
IP制限よりBASIC認証の方が適しているケースとは?
セキュリティ対策として閲覧者を制限する方法は、ユーザー名(ID)とパスワードで管理するBASIC認証だけではありません。
IPアドレスやホスト名など、さまざまな条件でアクセス制限をかけることができます。
つまり、閲覧制限は状況に合わせて最適な方法を選んで設定すべきなのです。
中でも下記に当てはまる場合は、他のアクセス制限よりBASIC認証の方が適しています。
BASIC認証の推奨ケース
- 対象ユーザー数が少ない場合(100名以下が目安)
- 特定のページ、またはディレクトリだけを制限したい
- 一時的にアクセス制限を設けたい
なお、IP制限を含むさまざまなアクセス制限については、下記の記事にて記述例つきで解説しておりますので参考にしてください。
関連記事
BASIC認証はどんな時に使う?
BASIC認証は、主に下記のようなシチュエーションで使います。
BASIC認証を設定すべきケース
- 本公開前にUIや機能をチェックしたい
- 会員のレベルに合わせて公開するページを指定したい
- ポートフォリオや課題をテストサイトにアップし、提出先にだけ見せたい
- 「noindex」設定をせずに、検索結果で非表示にしたい
つまり、「ネット上にアップしたいが不特定多数に見られるのは困る!」「アクセスを許可したい相手が少数なので大がかりな設定は面倒…」という場合にこそ、BASIC認証が用いられているのです。
BASIC認証のメリット・デメリット!リスクや注意点はないの?
結論から言うと、BASIC認証は簡単にアクセスユーザーが制限できる反面、上位のセキュリティ対策とは言えません。
まずは、BASIC認証ならではの特徴について見てみましょう。
BASIC認証の特徴
- ページ、またはディレクトリ単位での制限が可能
- 自動でnoindexが設定されるので、検索結果にヒットしない
- ログアウト機能が無く、ログイン情報はブラウザが記憶する
- ブラウザを閉じない限りID&パスの再入力が不要なので、不正アクセスのリスクがある
- 簡易的なセキュリティ対策として有効
- パスワードは暗号化できるが、通信は暗号化されない
上記の3~5番を見て分かる通り、ブラウザを閉じるまでは認証が有効あつかいになるため、席を外した隙に第三者に不正アクセスされてしまうリスクがあるのです。
したがって、BASIC認証はあくまで「一時的」かつ「簡易的」なセキュリティ対策として用いた方が良いでしょう。
また、6番の通りパスワードは無料ツールで簡単に暗号化できますが、通信は暗号化されません。
つまり「HTTP」の状態でBASIC認証を行うと、パスワードが暗号化する前の状態で扱われてしまうのです。
BASIC認証を設定する際は、安全対策として必ずSSL通信(HTTPs)下で実行しましょう。
.htaccessによるBASIC認証の設定方法!手順に沿って解説
ここからは、.htaccessを使って手動でBASIC認証を設定する手順について解説します。
設定の流れ
- 絶対パス(フルパス)を調べて設置場所を特定する
- 「.htaccessファイル」を作成する
- 「.htpasswdファイル」を作成する
- アップロードと動作確認
ちなみに、IDとパスワードを入力する画面は、たとえ設定が成功していたとしても閲覧者の環境によって変化します。
閲覧ユーザーが使っているパソコンのOS・ブラウザの種類、さらにはバージョンによって異なる画面が表示される仕組みになっているのです。
下記の画像は、あくまで一般的なイメージ例として参考にしてください。
①絶対パス(フルパス)を調べて設置場所を特定する
.htaccessファイルの作成時、およびアップロードする際に必要となるのが、絶対パス(フルパス)です。
絶対パス(フルパス)とは、サイト構造の上部から見て「ディレクトリの絶対的位置を表すパス」のこと。
例えば、サイト最上部である1層目のディレクトリの中に2層目のディレクトリが、2層目の中にAというページがあると仮定してみましょう。
この場合、Aページの絶対パス(フルパス)は「/1層目のディレクトリ/2層目のディレクトリ/Aページ」と表現できます。
つまり、絶対パスが分かれば「.htaccessファイル」と「.htpasswdファイル」をアップロードすべき設置場所を特定することができるのです。
絶対パス(フルパス)を調べるには下記のコードを使ってPHPファイルを作成する必要がありますが、時間と手間をかけたくない場合はサーバー管理者に問い合わせた方が良いでしょう。
フルパス調査用PHPファイルの記述例
<?php
echo __FILE__;
?>
②.htaccessファイルを作成する
.htaccessファイルにはWebサーバーに対する指示、つまり「何をして欲しいか」を記述します。
「.htaccess」ファイルの記述例
AuthUserfile /調べておいた絶対パス(フルパス)/.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
1行目 |
AuthUserfile /フルパス/.htpasswd |
調べておいた絶対パスをコピペし、後で作成する「.htpasswd」までのパスを記述する。 |
2行目 |
AuthGroupfile /dev/null |
「グループごと」にアクセスを許可したい時に使用。
本サンプルでは「ユーザーごと」に認証したいので、「/dev/null=そのようなファイルは存在しない」を記述。 |
3行目 |
AuthName “Please enter your ID and password” |
認証画面に表示するメッセージを設定。
実際の表示は、OSやブラウザによって異なる。
日本語だと文字化けするブラウザもある。 |
4行目 |
AuthType Basic |
認証タイプを指定する記述。
本サンプルではベーシック認証を設定するので「Basic」と記述。
ダイジェスト認証を設定する場合は、「Basic」を「Digest」に書き変える。 |
5行目 |
require valid-user |
アクセスを許可する条件を指定する。
本サンプルではID&パスが合っている全員にアクセスを許可する「valid-user」を記述。
「require user 条件」など、アクセス許可の範囲を狭めることもできる。 |
③.htpasswdファイルを作成する
.htpasswdファイルの役割は、ユーザーIDとパスワードの格納・管理です。
つまり、.htpasswdファイルには「誰に対してアクセスを許可、または拒否するか」を記述します。
今回は、強固なパスワード作成用と暗号化用の2つの便利ツールを使って.htpasswdファイルを作ってみましょう。
無料ツール(提供:LUFTTOOLS)
- パスワード生成(パスワード作成)ツール
- .htaccess による認証用 パスワード暗号化ツール
出展:LUFTTOOLS「パスワード生成(パスワード作成)ツール」
- ステップ1:パスワード生成ツールにアクセスする
- ステップ2:オプションを選択し、「生成」ボタンをクリック
- ステップ3:画面下部に生成されたパスワードの候補が表示される
- ステップ4:お好みでパスワードを選び、コピーする
出展:LUFTTOOLS「.htaccess による認証用 パスワード暗号化ツール」
- ステップ5:暗号化ツールにアクセスする
- ステップ6:「user01」など、任意のIDを入力する
- ステップ7:コピーしておいたパスワード入力し、「生成」ボタンをクリック
- ステップ8:画面下部に表示されたテキスト(ID+暗号化されたパスワード)をコピーする
- ステップ9:メモ帳などのテキストエディタに、IDと暗号化されたパスワードをペーストする
- ステップ10:「.htpasswd」など、任意のファイル名で保存する
テキストエディタでは「:」の左側にIDを、右側にパスワードを記述するのがルールです。
下記は今回のサンプル例ですが、「ID=user01」「暗号化したパスワード=msXU0CWndBQKA」となり、必要な分だけ改行して増やすことができます。
user01:msXU0CWndBQKA
④アップロードと動作確認
続いて、作成した「.htaccessファイル」と「.htpasswdファイル」をサーバーにアップロードします。
アクセス制限をかけたいディレクトリ、つまり事前に調べておいたフルパスの直下に配置されるように置くだけです。
ただし、アップロードの方法はサーバーによって多少の違いがありますので、マニュアルを参照しながら行いましょう。
アップロード後の処理
- ユーザーIDとパスワードが有効か、動作確認をしておく
- 絶対パス(フルパス)の調査用に作成したPHPファイルは、外部に漏えいしないよう削除しておく
まとめ
BASIC認証は、数あるアクセス制限の中で最もポピュラーな存在です。
リダイレクトに比べると.htaccessの扱い方も難しくなく、書き方もシンプルなのでサーバー管理者以外のスタッフが担当している会社も珍しくありません。
個人のブロガーやIT企業に勤めている方なら、ぜひ1度は挑戦してみてはいかがでしょうか。
関連