BASIC認証とは、Webサイトの特定のディレクトリに対してアクセス制限をかけることです。BASIC認証を設定すると、そのディレクトリ以下のコンテンツはIDとパスワードを入力しないと見ることができなくなります。そこで簡易的な会員制のサイトの構築や、公開前のサイトやテスト中のサイト等、特定のメンバーとだけファイル等を共有したい場合等にBASIC認証を設定することが多々あります。
エックスサーバーで構築しているサイトの場合、簡単にBASIC認証を設定することができますので、ご紹介します。以下の構築中のサイト(「site」フォルダ)にBASIC認証をかけてみます。
https://kaitsuburi.net/site
2021.09.28現在は、上記のサイトは閉鎖致しました。

ベーシック認証を設定してしまうと、その領域には検索エンジンなどのクローラーもアクセスすることができなくなります。クローラーが来ないということはつまり、GoogleやYahoo!などで検索してもベーシック認証を設定した領域は検索結果に表示されなくなりますので、サイトを構築中は安心です。但し、「.htaccess」を利用して、設定できるという非常に簡単な認証機能のため、セキュリティのレベルとしては非常に低いものになります。ベーシック認証を設定できる範囲は「.htaccess」ファイルのを設置したディレクトリのみが対象です。今回、上記のホームページが設定されているsiteフォルダにアクセス制限をかけてみます。
xserverのアクセス制限
xserverへのアクセス

サーバーパネルの表示

アクセス制限の選択

xserverのアクセス制限
ドメイン選択
ドメインを選択して、該当のフォルダのアクセス制限をONにします。

ユーザー設定
「ユーザー設定」をクリックして、アクセスを許可するユーザーを追加します。

①ユーザーID、パスワードの入力

BASIC認証の完了
②確認入力

BASIC認証の完了
以上で、siteフォルダにBASIC認証の設定は完了です。非常に簡単です。
アクセス制限の検証
ブラウザからURLを入力して起動すると、ユーザーIDとパスワードを要求されます。設定したユーザーIDとパスワードを入力しなければ、サイトは表示されません。
ユーザーID、パスワードの入力

サイトの表示

.htaccessによるBASIC認証
BASIC認証の方法
Basic認証に必要なものは「.htaccess」と「.htpasswd」です。簡易的な機能で手軽に設定できるとはいえ、BASIC認証を設定するにはサーバーの知識やFTP、暗号化に関する若干の知識を要します。XSERVERの管理画面からアクセス制御によってBASIC認証を行うのではなく、ここでは、手動で行ってみます。
BASIC認証の対象ディレクトリの決定
BASIC認証を設定するディレクトリ(特定の人だけに閲覧を許可するコンテンツがあるディレクトリ)を決めます。
サーバーのフルパスの調査
BASIC認証を設定するためには、「.htaccess」「.htpasswd」というファイルを作成して認証を設定するディレクトリにアップロードする必要があります。が、「.htaccess」を作成するのにあたって、URLではなくサーバーのフルパスを記載しなければなりません。そこで、サーバーのフルパスを調査しなければなりません。
「.htaccess」の作成
「.htaccess」というファイルを作成して、BASIC認証を設定するディレクトリにアップロードします。(調査したサーバーのフルパスを記載して)
パスワードの暗号化
BASIC認証を設定する為の「.htaccess」と共に、「.htpasswd」というファイルを作成して、そこにIDとパスワード情報を格納しますが、パスワードはそのまま記述するのではなく暗号化したものを記述しなければなりません。そこで、パスワードの暗号化という処理が必要となります。
「.htpasswd」の作成
「.htpasswd」というファイルも「.htaccess」と同じくBASIC認証を設定するディレクトリにアップロードします。
注意:
アップロード後にこの両ファイルのパーミッションが「755(rwxr-xr-x)」若しくは「705(rwx—r-x)」になっていることを確認します。なっていなければパーミッションを変更します。
「.htaccess」と「.htpasswd」のアップロード
内容を記述した2つのファイルを、認証設定するディレクトリにアップロードします。
BASIC認証の実施
BASIC認証の対象ディレクトリの決定
ここでは、kaitsuburi.netのsiteというディレクトリとします。
サーバーのフルパスを調査する。
サーバーのフルパスを取得する為に、次の様に記述したphpファイルを作成して、対象のディレクトリにUPLOADして、フルパスを取得します。
①pass.phpの作成
ファイル名は何でも良いですが、ここではpass.phpとします。

※echo __FILE__;と書きますが、exhoと__FILEの間は必ず半角の空白を挿入して下さい。又、__は、_が2つありますので注意。
②ディレクトリーにUPLOAD
上記のpass.phpを対象のディレクトリにFTPでUPLOADします。

③サーバーのフルパスの取得
ブラウザから、pass.phpを起動すると、サーバーのフルパスが表示されますので、書き写します。

「.htaccess」の作成
①記述方法
・AuthType Basic:
認証方式は「Basic」と記述します。
・AuthName “[認証名]”:
認証の名前を任意で設定し、「” “」で囲みます。
・AuthUserFile “.htpasswdファイルの場所”:
ユーザー名とパスワードを記したファイル「.htpasswd」ファイルを設置する場所を記述します。URLではなく、サーバー内でのフルパスで記述します。
注意:
「.htpasswd」ファイルの設置場所は、「.htaccess」ファイルと同じディレクトリでも構いませんし、別の場所でも問題ありません。
・require valid-user:
全ユーザーに認証を求めるという意味で、この通りに記述します。
②保存方法
「.htaccess」の文字コードはUTF-8(BOM無し)、改行コードはLFを設定する必要があります。文字コードや改行コードが誤っている場合は、500 internalserver error が発生するため注意が必要です。
注意:
TeraPadでは、文字コード「UTF-8(BOMなし)」を保存する時には「UTF-8N」を指定します。
③記述内容
対象のディレクトリに既に「.htaccess」がある場合は、ダウンロードした上で、BASIC認証の記述を「.htaccess」に追加します。

パスワードの暗号化
ベーシック認証用のパスワード生成ツールを無償提供しているサイトは多数ありますので、自分が使いやすいものを利用します。
①パスワード暗号化ツールの検索
ここではUFTTOOLSの「パスワード暗号化ツール」を使用します。

②暗号化の実施
ID、パスワードを入力して「生成」をクリックします。

「.htpasswd」の作成
①記述方法
「.htpasswd」ファイルはベーシック認証のログイン情報(IDとパスワード)を格納するファイルです。ユーザー名と暗号化されたパスワードを、半角コロン(:)記号で区切って記述します。
ユーザー名1:暗号化されたパスワード1
ユーザー名2:暗号化されたパスワード2
注意:
1行に1組ずつ、アカウントを作成したい数だけ改行しながら作成していきます。上記の例では2つのログイン情報を設定していますが、1つであれば1行だけで問題ありません。
②記述内容

「.htaccess」と「.htpasswd」のアップロード
2つのファイルが完成したら、FTPソフトを使用して所定の場所にアップロードします。これで、ディレクトりにアクセス制御が掛かります。

BASIC認証の確認
URLを入力して起動すると、以下のようなメッセージが表示され、ユーザーIDとパスワードを要求されます。ユーザー名とパスワードを入力すると、サイトが表示され、BASIC認証がされていることを確認できます。
ユーザーID、パスワードの入力

サイトの表示


コメント