始めまして。

BASIC認証についての質問です。
それぞれのファイルを構成後、サーバーにアップし
ウェブ上で確認したところ、ID・PASS入力画面は表示されるのですが、

警告: このサーバーは、ユーザー名とパスワードを安全ではない方法で送信することを要求しています (安全な接続を使わない基本的な認証)。

というメッセージが出てしまいます。これの解決方法が暗号化ということは
想像がつくのですが解決方法がわかりません。

またログイン時にログインボタンにカーソルをあてると、ページのURLが左下に表示されてしまいますが、これを直接入力すればID/PASSを入力しなくても当然のようにそのページに入れてしまいます。私はBASIC認証がまだ理解出来ていません。
どなたか、優しくご回答お願い致します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/12/12 16:40:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント20pt

既に調べておられるとおり暗号化を行わないと

認証用のIDとパスワードは平文のままネット上を流れることになりますので

簡単にキャプチャ(覗き見)可能ですが、

セキュリティソフトを適宜更新していれば覗き見される心配は特にありません。


どうしても暗号化したいという事であれば

(1)Basic認証ではなくDigest認証を用いる

  http://www.atmarkit.co.jp/flinux/rensai/linuxtips/699apachediges...

  サーバが対応していれば設定変更だけで済むので利用手数料等はかからない

(2)Basic認証+SSLを用いる

  SSLに対応したサーバを用いる必要があるので費用がかかるかもしれないが堅実

といった方法がありますがBasic認証、Digest認証、Basic認証+SSL、いずれにしても、

安全性は「利用者のスキルとモラルによるものが非常に大きい」ので

暗号化が求められるような重要なデータはネット上には置かずに

フレッツ・グループなどでプライベートなネットワークを構築することをお勧めします。


それほど重要ではなく、

万が一外部に漏れても社会的・会社的に問題になるほどではない情報ならば

Basic認証で定期的にIDとパスワードを変更するようにするだけでも十分でしょう。

(事前にいくつか準備しておいて、必要な時だけ顧客に教える。

使える期間は3日以内といったように出来るだけ短期間として

期限日には即座に削除することも伝えておく)


これまでのご質問履歴からBtoBでの利用を考えておられるようですが

データの重要度、管理・運営コストといった部分も今一度お考え直しくださいませ。

id:akr-x

ご丁寧なご回答ありがとう御座います。

一つ補足なのですが、パスワードそのものには暗号はかけて

.htpasswdに記述しました。それでもキャプチャされてしまうという

事なのですか?

また画面下に表示されてしまうというのは、urlの事です。

これを隠す方法というのも暗号化によるものなのでしょうか?

2007/12/05 17:50:23
id:tezcello No.2

回答回数460ベストアンサー獲得回数69

ポイント20pt

ご利用のサーバの設定によって使えるかどうかは不明ですが、暗号化には2つの方法があります。


ダイジェスト認証を使う

http://httpd.apache.org/docs/2.2/ja/mod/core.html#authtype

http://www.y2sunlight.com/ground/?Apache2%2FB.%B4%F0%CB%DC%C7%A7...


SSLで運用する

http://www.soumu.go.jp/joho_tsusin/security/kiso/k01_ssl.htm

http://www.atmarkit.co.jp/flinux/rensai/apache04/apache04a.html


BASIC/ダイジェスト認証で保護されるのはディレクトリ単位(下位ディレクトリを含む)です。

ログイン後進むページ(またはディレクトリ)はそのログインを要求するように設定したディレクトリの配下にある必要があります。

(説明がヘタでごめんなさい。分らない所はコメントでお答えします)

id:akr-x

ご回答ありがとう御座います。

kn1967 様にも質問させて頂いたのですが、暗号化とは

ブラウザ上で目に入ってくるURLの表示にも適用されるのでしょうか。

2007/12/05 17:52:12
id:tomo_k No.3

回答回数426ベストアンサー獲得回数26

ポイント20pt

http://ja.wikipedia.org/wiki/Basic%E8%AA%8D%E8%A8%BC

BASIC認証そのものがIDとパスワードを平文で送信するというものです。一応、Base64でエンコードされているので一見わかりにくくはなっていますがこれを元に戻すことは容易であり、IDやパスワードの秘匿という意味では全く意味がありません。

http://ja.wikipedia.org/wiki/Digest%E8%AA%8D%E8%A8%BC

似たような認証方式としてダイジェスト認証もありますが、MD5というハッシュ関数についても脆弱性が見つかっており、今から開発するシステムには使用すべきでありません。

http://ja.wikipedia.org/wiki/Secure_Socket_Layer

一般的には、SSLを使うのがよいでしょう。しかしながら、SSLで通信するにはサーバ証明書が必要でありこれを取得するにはある程度の費用が必要です。

id:y-kawaz No.4

回答回数1422ベストアンサー獲得回数226

ポイント20pt

BASIC認証はIDとパスワードを平文ヘッダで送信するので、パケットを盗聴すれば簡単にパスワードを盗むことができてしまうものです。

なのでBASIC認証をするならhttpではなくhttpsなURLに限ることが推奨されます。

そのメッセージにある「安全な接続」というのはHTTPS(SSL)にするということです。


また、ログイン後のURLに直接アクセスすれば認証無しで見れてしまうとのことですがBASIC認証がかかっているエリア内でそういうことはあり得ないと思うので構成か設定がまずいのではないでしょうか?

例えば /private というパスの下でBASIC認証が必要なら /private の .htaccess 等でBASIC認証をするべきです。

/privateの隣に/loginというページがあって、後者のみにBASIC認証がかかって居るなどと言う間抜けな設定になっているような気がします。

http://q.hatena.ne.jp/answer

id:t_shiono No.5

回答回数256ベストアンサー獲得回数22

ポイント20pt

警告メッセージについては、既に回答されていますので、後者の部分について。

「ログイン時にログインボタンにカーソルをあてると、ページのURLが左下に表示されてしまいます」

というのが、おかしいと思います。

ひょっとして、自作のログインフォームと、BASIC認証のユーザ情報の入力画面とを混同されていらっしゃるのではないでしょうか?

前者は、HTMLで自分で作成します。

後者は、BASIC認証を設定しておくだけで、ブラウザが表示してくれます。

どのようにベーシック認証を設定されていますか?

状況としては、PHPなどでベーシック認証の確認をしていると、同様の症状はおこせるかとは思うのですが・・・。

http://q.hatena.ne.jp/answer(ダミー)

id:akr-x

自作のログインフォームは作成しておりません。

となると、やはり、.htaccess内の記述がおかしいという事になるのでしょうか。

私が作成したものは、例えばabc.comというサイトだとすると、

abc.com/usermovie/.htaccess

というような形で置いています。そしてログイン・パス 入力後、

.htaccessと同じ階層にある、movie.phpというページが閲覧出来るように

したいのですが、ログイン入力をするにあたって、ログインボタンのリンクは

abc.com/usermovie/になるのでしょうか?

それとも、

abc.com/usermovie/movie.phpになるのでしょうか?

これにすると当然、URLが左下に表示され、直接入力が可能になってしまいます。

どうも、ここらへんが間違っているような気がします。

申し訳御座いませんが、初心者なもので、お力添えをお願い致します。

2007/12/05 18:06:09
  • id:t_shiono
    movie.phpへのリンクの件ですが、記述して頂いた内容で問題なさそうです。失礼しました。

    ログインボタンへのリンクは、

    http://abc.com/usermovie/movie.php

    へのリンクでよいのですが、このURLに直接アクセスしても、ベーシック認証を通っていないと表示されないはずなのです。
    そのため、おかしいと言う回答をさせていただきました。

    とすると、ひょっとして、一度ログインしたブラウザで、上記のURLを直接入力してアクセスしていないでしょうか?それですと、BASIC認証で入力した情報はそのまま保持されているので、直接入力した際には、自動的に認証処理が通るようになります。


    新規にブラウザを起動して、movie.phpのURLを直接入力して認証がかかっていれば、あとは、他の方が回答されているように、警告文をどうするかに注力すればよいかと思います。
  • id:kn1967
    回答1/への返信文>画面下に表示されてしまうというのは、urlの事です。
    回答2/への返信文>ブラウザ上で目に入ってくるURLの表示

    これらの言葉の意味が判らなかったのですが、質問文に書いておられたのですね。


    質問文>これを直接入力すればID/PASSを入力しなくても当然のようにそのページに入れてしまいます。


    考えられるパターンは2つです。
    (1)認証が済んでから1度もブラウザを閉じていないために前回の認証が生きている
    (2)Basic認証の設定をミスしている
    と言う事になります。

    確認の方法としては、ブラウザを全て一旦閉じてから、
    再びブラウザを開いてアドレス欄に直接movie.phpへのアドレスを入力してみてください。
    それでも開けてしまうようであれば(2)、IDやパスワードを聞いてきたなら(1)となります。


    念のため認証までの流れを書いておきます。
    (BASIC認証の場合です。本当はもっと複雑なのですがザックリと書いてます。
    他の方式はさらに難しくなるので、今は触れないでおきます)

    1)abc.com/index.html に movie.php にリンクするボタンがあったとします。
      ↓
    2)閲覧者がindex.htmlのリンクボタンをクリック
    (右下にはusermovie/movie.phpというアドレスが出ます)
      ↓
    3)ブラウザはabc.comに対して
    usermovie/movie.phpをよこせと要求します。
      ↓
    4)abc.comはIDとパスワードをよこせと返してきます。
      ↓
    5)ブラウザは閲覧者にIDとパスワードの入力を求めます。
      ↓
    6)閲覧者はIDとパスワードを入力します。
      ↓
    7)ブラウザはIDとパスワードを暗号化せずにサーバに送ります。
      ↓
    8)サーバはIDとパスワードが正しければusermovie/movie.phpを動かします。
    正しくなければステータスコード401を返します。

    usermovieディレクトリに対して正しく設定を行ったのであれば
    ブラウザにアドレスを直接いれても3)から8)までの動作になります。
  • id:t_shiono
    横から失礼します。

    IDとPWのキャプチャという点についてですが、インターネットでサイトを閲覧するというのは、閲覧者のPCとサーバが直接つながっているわけではなく、かなりいい加減ですが、

    閲覧者PC - 閲覧者プロバイダサーバ - どこかのサーバ - Webサーバ

    といったように、いくつかのサーバを経て実際にはデータをやりとりしています。
    この際に、BASIC認証だと、このデータのやり取りの中で、

    「パスワードはABCだよ」

    といったデータがそのまま流れます。
    通常はこのデータを途中のサーバをそのまま転送し、目的とするWebサーバに届けます。
    しかし、万が一途中のサーバなんらかの原因で悪意のある動作をすると、パスワードがABCだよというのがばれてしまう。というのが問題です。
    Webサーバでは、途中の経路のサーバのことを把握などすることはできませんので、その意味では、BASIC認証は危険ですよ。という警告です。

    ダイジェスト認証とは、上記の「パスワードはABCだよ」という部分を暗号化してやりとりするため、経路上のサーバでキャプチャされた場合でも、パスワードがそのまま漏洩することはありません。ただ、認証が通り、表示するデータを閲覧者へ送る際は暗号化されませんので、これをキャプチャされると、認証後にのみ表示されるべきデータが漏洩してしまいます。

    そこで、SSLを使うことにより、認証情報以外のデータも暗号化され、認証のパスワードや実データも含めた全てのデータを暗号化することにより、どの部分をキャプチャされても、情報はそのまま漏洩につながることはないのです。

    他の方がおっしゃっているように、順に手順としては煩雑になっていきますので、守るべきデータの重要度や、動作環境に応じて選ぶ必要があります。ただ、実用上は問題となるサーバを経由することは少ないと思うので、致命的でないデータの認証には現状でもBASIC認証は広く使われていると思います。
  • id:tezcello
    > 一つ補足なのですが、パスワードそのものには暗号はかけて
    > .htpasswdに記述しました。それでもキャプチャされてしまうという
    > 事なのですか?
    キャプチャされるのはサーバへ送るパスワードで、サーバに保存されている内容ではありません。
    ブラウザ上では、パスワードの部分は文字として読めませんが、入力時や送信時に暗号化される訳ではないんです。(サーバ側で処理されます)
    パスワードを入力すると、それを暗号化した文字列と、保存されている(暗号化された)文字列とが比較されます。両者が同じであれば、入力されたパスワードは正しいと判断される訳です。


    BASIC認証の場合暗号化そのものはサーバで行いますので、ブラウザ上で入力したパスワードは暗号化されずにサーバに伝わります。この時にパスワードを盗み見られる(=キャプチャされる)可能性がある事を、「...安全ではない方法で送信することを要求しています ...」と表現しているのです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません