BASIC認証についての質問です。
それぞれのファイルを構成後、サーバーにアップし
ウェブ上で確認したところ、ID・PASS入力画面は表示されるのですが、
警告: このサーバーは、ユーザー名とパスワードを安全ではない方法で送信することを要求しています (安全な接続を使わない基本的な認証)。
というメッセージが出てしまいます。これの解決方法が暗号化ということは
想像がつくのですが解決方法がわかりません。
またログイン時にログインボタンにカーソルをあてると、ページのURLが左下に表示されてしまいますが、これを直接入力すればID/PASSを入力しなくても当然のようにそのページに入れてしまいます。私はBASIC認証がまだ理解出来ていません。
どなたか、優しくご回答お願い致します。
既に調べておられるとおり暗号化を行わないと
認証用の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での利用を考えておられるようですが
データの重要度、管理・運営コストといった部分も今一度お考え直しくださいませ。
ご利用のサーバの設定によって使えるかどうかは不明ですが、暗号化には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/ダイジェスト認証で保護されるのはディレクトリ単位(下位ディレクトリを含む)です。
ログイン後進むページ(またはディレクトリ)はそのログインを要求するように設定したディレクトリの配下にある必要があります。
(説明がヘタでごめんなさい。分らない所はコメントでお答えします)
ご回答ありがとう御座います。
kn1967 様にも質問させて頂いたのですが、暗号化とは
ブラウザ上で目に入ってくるURLの表示にも適用されるのでしょうか。
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で通信するにはサーバ証明書が必要でありこれを取得するにはある程度の費用が必要です。
BASIC認証はIDとパスワードを平文ヘッダで送信するので、パケットを盗聴すれば簡単にパスワードを盗むことができてしまうものです。
なのでBASIC認証をするならhttpではなくhttpsなURLに限ることが推奨されます。
そのメッセージにある「安全な接続」というのはHTTPS(SSL)にするということです。
また、ログイン後のURLに直接アクセスすれば認証無しで見れてしまうとのことですがBASIC認証がかかっているエリア内でそういうことはあり得ないと思うので構成か設定がまずいのではないでしょうか?
例えば /private というパスの下でBASIC認証が必要なら /private の .htaccess 等でBASIC認証をするべきです。
/privateの隣に/loginというページがあって、後者のみにBASIC認証がかかって居るなどと言う間抜けな設定になっているような気がします。
警告メッセージについては、既に回答されていますので、後者の部分について。
「ログイン時にログインボタンにカーソルをあてると、ページのURLが左下に表示されてしまいます」
というのが、おかしいと思います。
ひょっとして、自作のログインフォームと、BASIC認証のユーザ情報の入力画面とを混同されていらっしゃるのではないでしょうか?
前者は、HTMLで自分で作成します。
後者は、BASIC認証を設定しておくだけで、ブラウザが表示してくれます。
どのようにベーシック認証を設定されていますか?
状況としては、PHPなどでベーシック認証の確認をしていると、同様の症状はおこせるかとは思うのですが・・・。
自作のログインフォームは作成しておりません。
となると、やはり、.htaccess内の記述がおかしいという事になるのでしょうか。
私が作成したものは、例えばabc.comというサイトだとすると、
abc.com/usermovie/.htaccess
というような形で置いています。そしてログイン・パス 入力後、
.htaccessと同じ階層にある、movie.phpというページが閲覧出来るように
したいのですが、ログイン入力をするにあたって、ログインボタンのリンクは
abc.com/usermovie/になるのでしょうか?
それとも、
abc.com/usermovie/movie.phpになるのでしょうか?
これにすると当然、URLが左下に表示され、直接入力が可能になってしまいます。
どうも、ここらへんが間違っているような気がします。
申し訳御座いませんが、初心者なもので、お力添えをお願い致します。
ご丁寧なご回答ありがとう御座います。
一つ補足なのですが、パスワードそのものには暗号はかけて
.htpasswdに記述しました。それでもキャプチャされてしまうという
事なのですか?
また画面下に表示されてしまうというのは、urlの事です。
これを隠す方法というのも暗号化によるものなのでしょうか?