Introduction
企業サイトなどを運営する際には、セキュリティレベルの高いログイン認証機能が必要不可欠です。なかでも、Basic認証と呼ばれる方法は、シンプルで構築しやすい認証方法です。しかし、セキュリティレベルが高いとはいえません。
では、なぜセキュリティレベルが高くないのか、そもそもどのような仕組みなのかを知りたいという方も多いでしょう。ここでは、Basic認証について、メリットとデメリット、設定方法、ほかの認証方法について解説します。
目次
Basic認証とは?
Basic認証とは、Webサイトにアクセス制限をかけられる認証方法のひとつです。HTTPに用意されている簡易的な認証方式で、特定のWebページやファイルなどに、比較的簡単にアクセス制限をかけられます。
ここでは、Basic認証について詳しくご説明します。
ユーザーIDとパスワードを使った簡易的な認証メカニズム
Basic認証とは、Webサイト内の特定の領域に、アクセス制限をかけられる認証方法のひとつです。HTTP基本認証とも呼ばれます。
認証設定を行ったページやファイルにアクセスしようとすると、ユーザーIDとパスワードの入力を求めるポップアップ画面が表示されます。そこに正しいID・パスワードを入力することで、アクセスできるようになります。
Basic認証でアクセスを許可する仕組み
認証はディレクトリ単位で設定でき、認証を行うディレクトリに「.htaccess」ファイルを適切に配置すれば、設定することが可能です。設定を行ったディレクトリのURLにアクセスすると、IDとパスワードの入力を求められるようになります。
たとえば、ルートディレクトリに「.htaccess」ファイルを配置すれば、ページ全体に認証が適用されます。適用範囲は、設定を行ったディレクトリ配下のすべてのページです。特定のディレクトリに配置すれば、特定のページやファイルに対して、認証を適用することも可能です。
また、Basic認証には、ログアウトの機能がありません。一度認証が成功すれば、ブラウザを閉じるまで何度でもアクセスでき、再認証は不要です。
Basic認証を設定する目的
不特定多数の人にWebサイトを閲覧されたくない場合、重要な情報が含まれるファイルを公開したくない場合などに使う場合があります。たとえば、特定の人に向けて公開する会員サイトや、サイト内にパスワードをかけたい重要なファイルがある場合などです。
ただし、後ほどご説明しますが、Basic認証は簡易的な認証方式で、セキュアとはいえません。そのため、以下のような目的に限定して利用することが推奨されます。
・個人で運営するWebサイト
・開発中のサイト
・特定のユーザーとだけ共有する限定サイト
企業の機密情報や個人情報などを扱うWebサイトで利用することは、セキュリティ上の理由からおすすめできません。
Basic認証のメリット
Basic認証を利用するメリットには、どのようなものがあるのかをご説明します。
ディレクトリ単位でアクセス制限をかけられる
上記でご説明したとおり、Basic認証では、ディレクトリ単位でアクセス制限をかけることが可能です。
たとえば、Webサイト内の特定のページにだけ、アクセス制限をかけるなどの使い方も可能です。また、ファイル単位でもアクセス制限をかけられるため、特定の画像やファイルにアクセスする際に認証を行うなどの使い方もできます。
このように、ディレクトリ単位でアクセス制限をかける機能を利用すれば、認証の単位を細かくわけられます。
再認証の手間が省ける
一度認証に成功すると、ユーザーがブラウザを閉じなければ再認証の必要がなく、何度でもアクセスできます。ブラウザを閉じなければ、ほかのサイトにアクセスした後でも、また戻ってきてアクセスすることも可能です。
また、ブラウザにログイン情報を記憶する機能がある場合は、ブラウザを閉じても、再度アクセスする際に再入力する必要がありません。ただし、これはブラウザに依存する機能なので、ログイン情報の記憶機能がないブラウザの場合は、再入力が必要です。とくに、スマホのブラウザでは、Basic認証のログイン情報を保存できないケースが多いです。
ブラウザのログイン情報記憶機能を利用する場合には、ユーザーが使うブラウザやデバイスが何か、確認しておく必要があるでしょう。
ほとんどのサーバーで簡単に設定できる
Basic認証を実装する際には「.htaccess」ファイルの設置が必要で、ほとんどのWebサーバーで利用が可能です。
ただし、レンタルサーバーを利用する際には、実装できない場合があります。とくに、無料サービスの場合には注意が必要です。レンタルサーバーを利用する際には、あらかじめ運営会社に仕様を確認しておくとよいでしょう。
Basic認証のデメリット
Basic認証は、手軽に実装できる認証方法です。しかし、セキュリティレベルの面などで、デメリットも多いです。ここでは、Basic認証を利用する際のデメリットについてご説明します。
セキュリティレベルが低い
残念ながら、Basic認証のセキュリティレベルは高いとはいえません。
Basic認証では、ユーザーIDとパスワードを入力して送信する際に、暗号化などが行われず、平文のまま送信されます。そのため、通信を傍受すれば、簡単に認証情報を入手できてしまうのです。Basic認証を採用するなら、HTTPではなく、SSL/TLS通信を利用できるHTTPSを利用すべきです。
また、ブラウザに認証情報を保存する際には、Base64という変換方式でエンコードされます。しかし、デコードすれば、簡単にIDとパスワードを確認できてしまいます。そのうえ、認証が必要なページやファイルにアクセスする際に、その都度ブラウザから認証情報が送信されるので、傍受できるタイミングも多いです。
このような認証情報のやりとりの仕組みから、Basic認証のセキュリティレベルが高いとはいえないことがわかります。
Basic認証で使用する認証情報が盗まれると、本来Webサイトやサイト上のファイルにアクセスできない第三者が、アクセスできるようになります。その結果、公開したくない重要な情報が外部に流出してしまうでしょう。
この認証方式のセキュリティ上の問題は、すでに指摘されています。実際、Microsoft Exchange Onlineでは、2023年3月31日にBasic認証が無効化されています。Basic認証を使用する場合は、個人的なWebサイトや、暫定的に利用するテストサイトなどに限定して使用するのがおすすめです。
クローラーもアクセスできなくなる
Basic認証でアクセス制限をかけると、検索エンジンやSNSのクローラーがアクセスできなくなるデメリットもあります。
GoogleやYahoo!など、検索エンジンのクローラーがインターネット上を巡回することで、検索データベースが作成されています。しかし、クローラーがアクセスできないサイトは、検索エンジンによる検索結果に表示されなくなってしまうのです。
そのため、検索結果に表示させたい場合は、この認証方法を使うことはおすすめできません。
サーバーをまたいで設定できない
Basic認証の設定を行うための「.htaccess」ファイルは、ディレクトリ単位で設定します。そのため、複数のサーバーにまたがる場合は、設定方法に注意が必要です。
Basic認証の設定方法
Basic認証を設定する際は、サーバー環境にテキストファイルを作成しておくだけなので、手軽に設定できます。ここでは、apache2 というサーバ環境で具体的にどのように設定を行うのかをご説明します。
①「.htaccess」ファイルを作成する
サーバー上に「.htaccess」ファイルを作成します。Basic認証を設定したいディレクトリに移動し、メモ帳などテキストデータを編集できるエディタで「.htaccess」という名前のファイルを作成します。
ファイルに記述する基本的な内容は、以下のとおりです。
AuthType Basic
AuthName “[認証の名称]”
AuthUserFile “[〇○○○]”
require valid-user
[認証の名称]は半角英数字で、適当な名前をつけてください。[〇○○○]には、次でご説明する「.htpasswd」ファイルを配置するディレクトリを、サーバー内のフルパスで記述します。
ファイルを作成できたら、所定の格納場所にアップロードしてください。
②「.htpasswd」ファイルを作成する
次に、ユーザーIDとパスワードの情報を格納する「.htpasswd」ファイルを作成します。
上記の①で作成した「.htaccess」ファイルに記述した、AuthUserFile “[〇○○○]”のディレクトリに移動し、「.htpasswd」というファイル名の新規ファイルを作成します。ファイルに記述するのは、以下のようなユーザーIDとパスワードの組です。
[ユーザーID]:[暗号化されたパスワード]
[暗号化されたパスワード]には、暗号化ツールなどで暗号化したパスワードを記述します。無料で利用できる暗号化ツールなどを利用しましょう。
なお、複数のユーザーIDとパスワードの組を設定する場合には、以下のように改行して記述します。
[ユーザーID1]:[暗号化されたパスワード1]
[ユーザーID2]:[暗号化されたパスワード2]
[ユーザーID3]:[暗号化されたパスワード3]
・・・
「.htpasswd」ファイルの作成が完了したら、所定の格納場所にアップロードします。
③Basic認証が設定されていることを確認する
Webサイトにアクセスしてみて、ユーザーIDとパスワードの入力を求められることを確認してください。
また、正しいIDとパスワードを入力したらアクセスできること、間違ったIDとパスワードを入力したらアクセスできないことも確認するとよいでしょう。
正しく認証が行われることを確認できたら、Basic認証の設定は完了です。
Basic認証以外の認証方法
ここまでご説明したとおり、Basic認証のセキュリティレベルは高いとはいえません。そのため、一般に公開して利用するWebサイトの場合は、ほかの認証方法を採用した方がよいでしょう。ここでは、Basic認証以外の認証方法にはどのようなものがあるのか、ご説明します。
Digest認証
この認証方法では、認証情報にランダムな文字列を付与し、ハッシュ化により平文に依らない認証を行っています。その点では、平文で認証情報を扱うBasic認証よりは、セキュリティレベルが高いといえます。
一方で、Digest認証ではハッシュ化するとはいえ、ページごとにIDとパスワードを送信するため、セキュリティレベルの高さという点では、過信すべきではないでしょう。
Form認証
この認証方式は、HTTPの仕様を利用する方法ではなく、Webアプリケーション内で認証の仕組みを実装する方法です。Webアプリケーション内でログイン認証機能を実装し、データベースにユーザーIDとパスワードの情報を格納する必要があります。また、以下のようなセッション管理機能の実装も必要です。
ユーザーは、ログイン画面でユーザーIDとパスワードを入力し、情報が正しければログインすることが可能です。ログイン後はセッションIDが発行され、ユーザー側の端末のブラウザにCookie情報として保存されます。サーバー側は、リクエストに含まれるCookie情報のセッションIDを確認し、ログイン状態であるかどうかを確認してログイン管理を行います。
なお、Form認証自体に暗号化の仕組みはないため、httpsなどの暗号化された通信で保護する必要があります。
セッションIDによる認証管理を行うので、直接認証情報を盗まれるリスクが低く、Basic認証よりもセキュリティレベルが高いといえるでしょう。ただし、上記のようなログイン認証の仕組みの実装が必要です。
IP制限とBasic認証の併用
Basic認証とIP制限を組み合わせる方法もあります。
たとえば、特定のIPアドレスからのアクセスは許可し、それ以外のIPアドレスからアクセスした場合には、Basic認証を行うなどです。これにより、特定の人はアクセス可能で、それ以外の人は、IDとパスワードによる認証が必要という仕組みを実現できます。
しかし、この場合、セキュリティレベルがBasic認証より下がることになります。セキュリティレベルを高めるための方法になっていないことに、ご注意ください。
まとめ
この記事では、Basic認証について、メリットとデメリット、設定方法、ほかの認証方法について解説しました。Basic認証は、セキュリティレベルが高い認証方法とはいえないため、より堅固な認証方法が必要です。
SHIFTでは、お客様の環境にあった最適なセキュリティソリューションをご提供しています。経験豊富なコンサルタントが、ID管理や認証、認可、特権IDソリューションの設計、構築などを支援いたします。セキュリティ対策の強化を検討したい場合には、お気軽にSHIFTにご相談ください。
>>SHIFTのセキュリティソリューションのページへ
>>お問い合わせページへ
>>料金についてページへ