Basic認証とは?Webサイトのセキュリティ対策

はじめに

Basic認証は、ウェブサイトやアプリケーションへのアクセスを制限するためのものです。この記事では、Basic認証の基本的な概念、実装の仕方、セキュリティ上のポイントについて詳しく解説します。

Basic認証とは?

Basic認証とは、HTTPプロトコルの一部であり、Webサーバーが特定のリソースにアクセスしようとするクライアントに対して、ユーザー名とパスワードを要求して認証を行う仕組みです。

HTTPプロトコルの初期のバージョンでは、セキュリティの考慮があまりなされておらず、特にパスワードなどの機密情報がプレーンテキスト(暗号化されていない、通常のテキスト形式のデータや情報)で送信されることが多くありました。このような状況を改善し、クライアントとサーバーの間でセキュアな通信を実現するために、HTTPの認証機能が導入されました。

Basic認証は、その最も初期の基本的な(basic)認証方法の一つです。最もbasicな認証方法であるがゆえに、認証情報は暗号化されていないプレーンテキストのままで送信されるため、セキュリティ上のリスクがあるとされています。

より高度なセキュリティが求められる場合は、他の認証方法やHTTPSと組み合わせることが推奨されています。

実務経験でBasic認証を実装した2つのパターン

WordPressの管理画面ログインページへのアクセスに対して、Basic認証を実装

管理画面ログインページへのアクセスに対して、Basic認証を実装することで、通常の管理画面へのログインと合わせてもう一段階ログイン認証が増えるため難しいパスワードにすればセキュリティがより強くなります。

会員サイトのWordPressの場合管理画面のログインページにBasic認証を実装すると、会員ログインにもbasic認証がかかるので会員サイトの場合はBasic認証ではなくより安全な認証方法を考える必要があります。

サイト公開前のテスト環境のページ全体へのアクセスに対してBasic認証を実装

サイトを公開する前の確認用でテスト環境のページ全体へのアクセスに対してBasic認証を実装し、パスワードを知っている人のみアクセスができるようにします。

Basic認証の設定について

ユーザー名とパスワードを作成する

下記のようなパスワード生成ツールで「ユーザー名」と「パスワード」を生成します。

ルフトツールズ(LUFTTOOLS) web・ウェブ制作に役立つ便利ツール集

パスワード生成(パスワード作成)するweb・ウェブ制作に役立つ便利ツール。お好みのパスワードを生成(自動作成)することが…

.htpasswdファイルを作成して本文を生成する

生成された「ユーザー名」「パスワード」を下記「htpasswdジェネレーター」に入力して生成された文字列を.htpasswdファイルに貼り付けます。

例 ユーザー名「12345」パスワード「password」、アルゴリズムは「MD5」で「暗号化」をすると

「12345:$apr1$3EsEJJs4$EHlEiiMq2M.AKdQlsFDaL1」という文字列が生成されるので.htpasswdファイルに貼り付けてください。

.htpasswdファイルをサーバーのウェブ公開ディレクトリ(ドキュメントルート)より外に設置する

.htpasswd ファイルをウェブ公開ディレクトリの外に設置する方法が一般的です。これにより、ウェブサイトの一般的なファイルにはアクセスできますが、.htpasswd ファイルへの直接アクセスは制限されます。

例えば、ウェブサイトの公開ディレクトリが /var/www/html である場合、.htpasswd ファイルを /var/www などのウェブ公開ディレクトリの外に設置することが考えられます。

.htaccessファイルにBasic認証用の記述を追加する

WordPressの管理画面のログインページへのBasic認証

<Files wp-login.php>
AuthType Basic
AuthUserFile  /.htpasswdファイルまでのフルパス/.htpasswd
AuthGroupFile /dev/null
AuthName "入力してください。"
require valid-user
</Files>

ページ全体へのBasic認証

AuthType Basic
AuthUserFile /.htpasswdファイルまでのフルパス/.htpasswd
AuthGroupFile /dev/null
AuthName "入力してください。"
require valid-user

フルパスの取得について

サーバーによってはメニューから調べることができますが、わからない場合は下記.fullpath.phpを作成しサーバーにアップロードしてからアクセスして確かめてみてください。

ウェブ公開ディレクトリにアップロードにした場合下記にアクセスすると確認ができるので、.htpasswdファイルまでのパスを逆算して取得し、.htaccessファイルに記載してください。

https://example.com/fullpath.php

fullpath.php

<?php echo __FILE__; ?>

うまくいけばアクセスした時に下記のように「ユーザー名」と「パスワード」の入力要求画面が表示がされるはずです。

サーバーのメニューから設定

.htaccessファイルと.htpasswdファイルから設定するのが難しいと思う方は、

サーバーのメニューからBasic認証の設定をすることができます。

代表的なサーバーのBasic認証の設定方法のリンクを紹介します。

下記サーバーのさくらインターネット以外はアクセス制限を設定したいディレクトリを選択し「ユーザー名」「パスワード」を入力するだけのシンプルな設定ですが、さくらインターネットはファイルマネージャーにアクセスして設定する必要があります。

xserverの場合

レンタルサーバー「エックスサーバー」のご利用マニュアル|ご希望のフォルダに対してBASIC認証を設定できる「アクセス制限…

ロリポップサーバーの場合

ロリポップ!レンタルサーバー

ロリポップ!レンタルサーバーのご利用マニュアル アクセス制限の設定方法を説明したマニュアルページです。…

ConoHa Wingサーバーの場合

ConoHaサポート

ConoHa WINGのご利用ガイド、よくある質問などの各種サポート情報をご案内しています。ConoHa WINGは便利…

さくらインターネットサーバーの場合

さくらのサポート情報

このマニュアルでは、ファイルマネージャーから「アクセス制限」や「インデックスファイルの設定」する手順についてご案内してい…

サーバーメニューから設定をする時に.htaccessファイルを上書きしてしまうので、設定前に必ずバックアップをとってください。
特にWordPress環境での.htaccessにデフォルトで下記が記載されているので上書きで消えないようにしてください。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

まとめ

Basic認証で一段階ログイン認証を増やしたり、パスワードを知っている人のみが閲覧できる環境を構築することが容易にできるが、最もbasicな認証であるがゆえに、セキュリティが弱い部分もあったり、WordPressの会員サイトへの実装は向いていないなどの欠点もあるため、Basic認証はあくまでも簡易的な認証であることは知っておく必要があります。

他のセキュリティ関連の記事

セキュリティ関連

クリックジャッギング攻撃とは、ウェブサイト内のコンテンツを透明なフレームや不可視のフレームに表示し、ユーザーが意図しないクリックを引き起こす攻撃手法です。クリックジャッギング攻撃を防ぐためには、適切なセキュリティーヘッダーの設定が必要です。

セキュリティ関連

ブルートフォースアタックの仕組みや危険性、対策方法に解説しています。ブルートフォースアタックによる攻撃でパスワードが突破できる時間のパスワードの文字数による変化を計算式を用いて示しています。

>お問い合わせはこちら

お問い合わせはこちら