トピックス 2021.07.09 HTTPSでBasic認証の安全性が上がる?特徴や注意点を知って設定しよう
普段使用しているWebサイトにはURLが設定されており、HTTPとHTTPSがあります。HTTPの機能の1つにBasic認証があることをご存知でしょうか。
Basic認証はHTTPで定義されている機能で、Webサイトへのアクセスを制限できます。比較的簡単な作業で設定が可能です。しかし、設定が簡単な分、セキュリティ面が安全ではない欠点があります。
そこで必要になるのがHTTPSです。HTTPSとは、Webサイトを見る際の通信を暗号化します。第三者からの盗み見やデータの改ざんを防ぐ仕組みです。
GoogleはHTTPSでの通信にしていない場合、危険な通信と認識します。そのため、通信の暗号化が必須と言えるでしょう。
この記事では、Basic認証について解説していきます。
HTTPの3種類の認証方法とは?

HTTPは「Hyper Text Transfer Protocol」の略で、Webサーバーとブラウズ間でインターネット通信を行う際の規約(約束事)です。Webサイトを閲覧したり、ブログを読んだりすることに使用されます。そのため、インターネットを使用する上で必要不可欠なものです。
通信が暗号化されていないため、第三者に通信データが漏れる可能性があるので注意が必要です。
またHTTPには、Webサイトへのアクセスを制限するための、様々な認証方法があります。
こちらでは、HTTPで定義されている3種類の認証方法を解説していきますので、参考にしてみてください。

1種類目のHTTPのBasic認証とは、Webサイトへのアクセス制限をかけるための設定方法です。ほとんどのWebサーバーとブラウザに対応しています。
Webサイト内のページやファイルに対して、アクセス制限をすることで設定可能です。特定のユーザーしかアクセスできないようにするので、見られたくないページがある際に活用できます。
Base64と呼ばれる変換方式を使用して、ユーザー名とパスワードを送信します。ログイン情報をそのまま送信するため、セキュリティに問題があることが欠点です。

2種類目には、Digest認証(ダイジェスト認証)があります。Digest認証は、Basic認証と同様にユーザー名とパスワードの入力を求められます。
異なる点は、ログイン情報をデータの盗み見や改ざんから防ぐハッシュ化(ダイジェスト化)にして送信することです。そのため、ログイン情報を盗聴しようとした場合の解析が困難になります。Basic認証の欠点を補っている認証方法です。
3種類目のForm認証(フォーム認証)は、HTMLと呼ばれるマークアップ言語で作成されたフォームを使用します。フォームでユーザーIDやパスワードなどのログイン情報を送信する認証方法です。
Form認証はHTTPの仕様にはないのですが、HTTPSで使用されます。そのため、アプリケーション側で実装することになります。
複数のサービスごとに、ひとつずつログイン情報を入力する必要がありません。1つのログイン情報で複数サービスが利用可能です。
Basic認証においてHTTPをHTTPSにする理由

Basic認証は簡易的な設定で利用可能ですが、HTTPで使用すると第三者にデータが漏れる可能性があるため、セキュリティに欠点があります。Basic認証でWebサイトにログインする際は、Base64と呼ばれる変換方式が使われます。
Base64は、アルファベット・数字・記号の64種類の文字のみが利用可能です。データが暗号化されないままやり取りを行うため、安全ではありません。サイトにアクセスする際のログイン情報が盗聴される危険性があります。
そこで、HTTPの通信をSSL化(暗号化)したHTTPSを使用することが重要です。HTTPSは、データを第三者に盗み見されないように暗号化した状態で通信を行います。
そのため、認証を使用する際は、HTTPSと組み合わせて使用しましょう。
HTTPのBasic認証の特徴

HTTPの機能であるBasic認証は、簡易的な操作でWebサイトへのアクセス制限を可能にします。さらに様々な特徴があるので、知っておくと使用する際の参考になるでしょう。
主な特徴は以下になります。
・ディレクトリ単位でアクセス制限が可能
・ブラウザがログイン情報を記憶
・ブラウザを閉じるまで認証が有効
1つ目の特徴は、アクセス制限ができます。Basic認証の設定範囲は、ディレクトリ単位です。特定の領域にディレクトリ単位でアクセスが可能です。同じディレクトリ内であれば、PDFファイルや画像なども範囲に含まれます。複数のファイルをまとめて保存するフォルダと同じ機能です。
ユーザーIDとパスワードの入力は、ディレクトリのURLごとになります。

2つ目の特徴は、認証後にブラウザがログイン情報を記憶することです。1度認証が完了すると、ブラウザがログイン情報を記憶します。次回以降にログインする際は、ユーザーIDとパスワードを入力する必要がありません。
ただし、ブラウザに依存してしまいます。違うブラウザで開いたり、バージョンが違ったりすると、ログイン情報の入力が必要になるので注意が必要です。
3つ目の特徴は、ブラウザを閉じるまで認証が有効なことです。Basic認証は、認証が完了するとブラウザを閉じるまで、ログイン情報が記憶されます。
ブラウザを閉じなければ、再度ユーザーIDとパスワードを入力する必要はありません。何度でもアクセスできます。途中で他のWebサイトの閲覧や作業が可能です。
HTTPのBasic認証の注意点を知ろう

Basic認証の注意点は以下の通りです。
・ある程度の知識が必要
・サーバーをまたいで認証を維持できない
・検索エンジンのクローラーの巡回ができない
1つ目の注意点は、ある程度の知識が必要になります。設定をする際は、サーバーやFTPなどの知識が必要です。FTPは、サーバーとクライアント間で転送作業をする際のプロトコル(決まりごと)です。
専門的な知識は必要ありませんが、何も知識がない状態だと難しく感じる可能性があります。ただし、Webサイトを運営している方なら難しい作業ではありません。
2つ目の注意点は、簡易的な認証のため複数のサーバーをまたいで維持できないことです。
Basic認証の設定範囲は、ディレクトリ単体になります。ディレクトリを超えた範囲だと設定ができません。

例えば、サーバーをまたぐような場合、認証設定の範囲外になります。あくまでサーバーのディレクトリのみです。
3つ目の注意点は、検索エンジンのクローラーの巡回ができません。特定ユーザーのアクセスを制限する機能ですが、検索エンジンのクローラーのアクセスも制限します。
クローラーは、インターネットにあるWebサイトの情報を取得して、検索結果画面に表示させることです。Basic認証の設定をすると、クローラーが巡回できなくなります。そのため、検索結果に表示されなくなるので注意が必要です。
HTTPのBasic認証を設定する方法

HTTPのBasic認証を設定する方法を知りたい方も多いのではないでしょうか。
簡易的な操作で設定ができるので、方法を知っておきたいところです。こちらでは、HTTPのBasic認証の設定方法を解説していきます。
まずは、ディレクトリを決めることから始めます。ここで決定したディレクトリの中に「.htaccess」と「.htpasswd」の2種類のファイルを作成しましょう。
次に、ディレクトリの絶対的位置を記述するためのフルパスを調べます。フルパスとは、サーバーの中を1番上の階層から表現したファイルの場所です。
Basic認証を設定する際に、「.htaccess」「.htpasswd」を作成してディレクト内にアップロードします。ファイルの作成には、フルパスが必要になるため調べます。

続いて、「.htaccess」ファイルを作成しましょう。あまり見慣れないファイルかもしれませんが、メモ帳で新規ファイルの作成を行います。その際にファイル名を「.htaccess」にします。
ファイルの編集はテキストで行いますが、文字コードを「UTF-8」にすると動作しないことがあるので「ANSI」にしましょう。
最後に、「.htpasswd」を作ります。「.htpasswd」は認証のログイン情報を格納する役割です。こちらもメモ帳を使用して、新規ファイルを作ります。ファイル内には、ユーザー名とパスワードを記述しましょう。
ただし、パスワードは暗号化したものを記述しなければならないので、注意が必要です。パスワードの生成には、無償ツールがあるので使いやすいものを設定しましょう。
その後、作成したファイルをアップロードすれば作業は完了です。
終わりに

Basic認証は、簡易的な設定でユーザーのアクセス制限を可能にします。1度認証が完了すると、ブラウザを閉じるまで何度でもアクセスできる特徴もあります。
しかし、ログイン情報の送信にBase64を使用しており、第三者に盗み見される危険性があるので注意が必要です。そこで重要なのが、HTTPをSSL化したHTTPSに設定することです。
HTTPSはインターネット通信を暗号化するため、Basic認証の欠点を補います。
Basic認証は、Webサイトの公開前に役立つ機能です。セキュリティ面を考慮して、データを第三者に盗み見されてもわからないようにするHTTPSで安全に使用しましょう。
【参考リンク】
・Basic認証(基本認証)とDigest認証、それぞれの役割と違いについて
https://madalinazaharia.com/column/basic-authentication-and-digest-authentication/#Digest
・Basic認証 Digest認証 Form認証の違い
https://medium-company.com/http%E8%AA%8D%E8%A8%BC%E6%96%B9%E6%B3%95%E3%81%AE%E7%A8%AE%E9%A1%9E%E3%81%A8%E9%81%95%E3%81%84/
・ベーシック認証(Basic認証)とは?設定方法と注意点・エラーになる原因を解説
https://www.itra.co.jp/webmedia/basic_authentication.html
・Basic認証とは|Apacheでの設置方法3つと注意点3つなど多数紹介
https://www.fenet.jp/infla/column/technology/basic%E8%AA%8D%E8%A8%BC%E3%81%A8%E3%81%AF%E3%81%A9%E3%82%93%E3%81%AA%E8%AA%8D%E8%A8%BC%E6%96%B9%E6%B3%95%EF%BC%9F%E7%89%B9%E5%BE%B4%E3%82%84%E8%A8%AD%E7%BD%AE%E6%96%B9%E6%B3%95%E3%82%92%E8%A7%A3/#3%EF%BC%9A%E7%89%B9%E5%AE%9A%E3%81%AE%E9%A0%98%E5%9F%9F%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E5%88%B6%E9%99%90%E3%81%A7%E3%81%8D%E3%82%8B
・サイト閲覧者を簡単に制限 ? BASIC認証の設定と解除の方法
https://japan.norton.com/basic-authentication-10326
TEXT:セキュリティ通信 編集部
PHOTO:iStock
- tag
