Basic認証の認証についてお悩みですか?
Basic認証はディレクトリ単位でアクセス制限ができる一方で、「すり抜けられてしまう」「脆弱性がある」など危険とする意見もあり、使い方に悩む担当者も少なくありません。
そこでこの記事ではBasic認証を使うべきか悩んでいる人に向けて、Basic認証の概要や仕組み、すり抜けのリスクについて解説いたします。
この記事を読めば、Basic認証が脆弱といわれる理由や最適な使い方について把握することができるでしょう。
Basic認証とは?概要と仕組みについて
まずは、Basic認証の概要と仕組みについてご紹介します。
Basic認証とは
Basic認証とはWebサイトにアクセス制限をかける認証方法の1つです。httpの機能が持つ認証システムで、手軽に制限をかける認証方法として知られています。
Basic認証はページやファイルなど、特定の領域に制限をかけられる点が特徴です。Basic認証で制限されたページは認証ダイアログが起動し、ユーザーIDとパスワードの入力を求めます。正しい値が入力されると認証され、ユーザーは閲覧が可能となります。
そもそもhttpには、Basic認証をはじめとする3つの認証システムが定義されています。
1つ目は「Basic認証」はWebサイトへのアクセス制限をかける設定方法で、ほぼすべてのWebサーバーやブラウザに対応しています。
2つ目の「Digest(ダイジェスト)認証」は、Basic認証と同様にユーザー名とパスワードの入力を求めるシステムです。
3つ目の「Form(フォーム)認証」は、HTMPというマークアップ言語で作成されたフォームを使用し、フォーム形式でIDやPWといったログイン情報を送信して認証します。Form認証はhttpsを使用して暗号化する方法が一般的で、アプリ側で実装されます。
Basic認証の仕組み
Basic認証では、URLの入力またはリンクをクリックすることでブラウザがWebサーバーにリクエストを送ります。ここでBasic認証を設定していると、Webサーバーはブラウザに認証が必要であることを知らせます。
Webサーバーから認証の知らせを受けたブラウザは、画面に認証ダイアログを表示して認証を求めるのです。ここで正しい値を入力すれば認証が通り、アクセスができるようになります。
上記のBasic認証では、「.htaccess」「.htpasswd」という2つのヘッダが働いています。Basic認証はサーバーの認証をかけたいフォルダに「.htaccess」「.htpasswd」という2つのファイルを作成し、それぞれに決まったコードを記述するだけで設定は完了です。
ファイルはメモ帳の新規作成で作成できるため、特別なツールも必要ありません。上記のヘッダ内に記載したIDやパスワードと照合することで、認証の許可もしくは拒否という仕組みが成立しています。
ログイン情報が一致していればアクセスが許可され、不一致ならもちろんアクセスは拒否されるため、ユーザーはファイルにアクセスできません。
Basic認証のメリットとデメリット
Basic認証には、以下のようなメリットとデメリットがあります。
Basic認証のメリット
- 設定が比較的簡単である
- 一度認証されればログイン情報が記録される
前述の通り2つのヘッダを置くだけで簡単に設定できるBasic認証は、古くからその手軽さで重宝されています。
また1度認証に成功すればログイン情報が記録されるため、再度アクセスする際に入力し直す必要がありません。ただ別ブラウザやスマートフォンは対象外なので、ログイン情報はその都度入力が必要です。
Basic認証のデメリット
- サーバーをまたいだ認証設定ができない
- クローラーが巡回できないため、SEO対策はできない
- セキュリティレベルが高いとはいえない
Basic認証の適用範囲は、ヘッダである「.htaccess」ファイルを設置したディレクトリのみです。そのため、サーバーをまたぐなどディレクトリの範囲を超えた範囲で制限はかけられません。
Basic認証を適用した範囲は「クローラー」もアクセス不可となります。クローラーとは。インターネット上に存在するコンテンツを巡回してあらゆる情報を取得している巡回プログラムのことです。
クローラーが巡回できない範囲は情報が取得できず、検索結果に表示できません。そのためSEO効果を狙っているのなら、Basic認証は避ける必要があります。
また担当者が知っておくべきなのが、Basic認証は強固なセキュリティを持つ認証システムではないということです。その理由については、次で解説します。
Basic認証はすり抜けられる?懸念される脆弱性とその対策
「Basic認証はセキュリティレベルが低く、すり抜けできるので危険」という声もあります。Basic認証の脆弱性が指摘される理由としては、「文字コードの種類」と「httpであること」の2つです。
Basic認証ではログイン情報を入力する際「Base64」という文字コードを使います。Bese64はアルファベット、数字、記号の64種類のみの文字コードでやり取りするため、簡易的な通信(=盗聴されやすい)とされているのです。
簡易的な通信である「Base64」を平文でやり取りする「http」通信でやり取りすれば、盗聴されやすくすり抜けられるリスクが上がります。そのため、Basic認証は脆弱性が高いといわれているのです。
Basic認証の脆弱性における対策として、「https」を使う方法があります。SSL対応のhttpsなら暗号化されるので、平文で情報を送ることがありません。暗号化されることで盗聴リスクが下がり、セキュリティレベルを保つことができます。
企業はBasic認証をどう活用するべきか
あくまでも「簡易的な認証」という位置づけであるBasic認証は、使うシーンを考えなければいけません。企業では、Basic認証を以下のようなシーンで活用しています。
- 公開直前でクライアント確認用のWebページ
- 社内で特定のメンバーとのみ共有する場合
- 無料サイトなど簡易的な会員サイト
上記はどれも、簡易的な認証で問題ないシーンです。「万が一第三者に閲覧されても甚大な被害が発生しないが、念のために制限をかけたい」という場合には、簡単に設定できるBasic認証が最適でしょう。もちろん個人情報や機密情報などは含めてはいけません。
個人のプログラマやWebデザイナーが、スキルを証明するために作成したポートフォリオでBasic認証を設定するケースも多いものです。
Basic認証はクローラーが巡回しないため、SEO対策が必要ないものや簡易的に制限をかけたいものに活用するようにしましょう。
まとめ
Basic認証について、特徴や仕組み、メリットやデメリットについてご紹介しました。この記事をまとめます。
- Basic認証とはhttpの持つ認証機能の1つである
- Basic認証は手軽に設定できる反面、httpではログイン情報を抜き取られるリスクがある
- Basic認証は簡易的な認証であることを把握し、適切な状況で使うようにする
簡単に設定できるBasic認証は、使い方さえ間違えなければ便利な機能です。ぜひ特徴や注意点を知って、効果的に活用してください。