ユーザーフレンドリーであるとはどういうことか

先のエントリに対して、元記事の作者からcyano: HTTPSからHTTPのページに移動する際にIEのセキュリティー警告を回避できることについてという補足説明が加えられました。また、元記事についても「ユーザーフレンドリー」云々という一文が削除されました。素早い対応ありがとうございます。
いくつか質問が提示されているので(というか質問だらけだ)、回答します。

前のエントリの方法を使って、パスワードを暗号化して送ってその結果クレデンシャルを得た後で、セキュアじゃない状態に移行することというのは何か問題があるのですか? 別の言い方をすれば、HTTPSのLocationレスポンスヘッダでHTTPなページに飛ばすときに、IEで出てくるセキュリティーの警告というのは本当に必要なものなのですか?

その二つの問題は実は別の問題なのですが、混同されているようです。

認証だけにSSLを使うことの是非

前のエントリの方法を使って、パスワードを暗号化して送ってその結果クレデンシャルを得た後で、セキュアじゃない状態に移行することというのは何か問題があるのですか?

全然問題ありません。セキュアじゃない状態に移行することをユーザーが認識して、自覚的に選択している限りは。

セキュリティーの警告ダイアログは必要か

別の言い方をすれば、HTTPSのLocationレスポンスヘッダでHTTPなページに飛ばすときに、IEで出てくるセキュリティーの警告というのは本当に必要なものなのですか?

それが必要かどうか判断するのはユーザーであって、サービスを提供するサイトではありません。Internet Explorerの最近のバージョンでは、デフォルトでその警告が表示されるように設定されており、ユーザーはこの警告が表示されることを期待して操作しています。表示されないことを期待するユーザーは「今後、この警告を表示しない」というチェックボックスをクリックするので、いずれにせよサービスを提供する側はこれを考慮する必要はないし、すべきではありません。

Firefoxのデフォルト動作はデフォルトで変更される

別の質問も提示されていますが、上の問題と根は同じなので、この文脈で回答します。

ところで、Firefoxとかだとセキュリティー警告が出なかったと記憶してるのですが、これはなぜですか?

いいえ、Mozilla Firefoxでも、デフォルトではセキュリティ警告が表示されます。初回だけは次のようなポップアップが表示されます。

暗号化されたページから去ろうとしています。今後受信する情報は第三者が簡単に傍受できます。
□暗号化されているページから暗号化されていないページに移るときは毎回警告する。

注意して欲しいのは、チェックボックスの記載がInternet Explorerとは異なっていることです。Firefoxでは、最初だけ警告するのがデフォルトになっており、次回からはユーザーが意図的に「毎回警告する」チェックボックスにチェックを入れない限りは警告が出なくなります。これは「暗号化されたページを要求する」、すなわちhttps://〜なページに遷移するときも同じです。FirefoxのURL欄に"about:config"と入力して設定を表示させると分かるのですが、

  • security.warn_entering_secure.show_once
  • security.warn_entering_secure
  • security.warn_leaving_secure.show_once
  • security.warn_entering_secure

の初期値は全てtrueです。show_onceがtrueなので、警告のポップアップで「毎回警告する」にチェックを入れずにOKを押すと、

  • security.warn_entering_secure
  • security.warn_entering_secure

がfalseに変えられてしまい、警告は次回から出なくなってしまいます。ワタシはFirefoxのダイアログは安全側に倒していないという意味で問題あると思うのですが、ユーザーがダイアログをよく読めばどうするかは自分で判断できるので、それ以降の結果については自己責任ということでよいと思います。

Internet Explorerはよくできている

再びInternet Explorerに戻りますが、件の警告ダイアログには「詳細情報」というボタンがあり、これをクリックするとこのダイアログが意味することを詳細に説明する別ウインドウが開きます。

セキュリティで保護されたサイトからほかのサイトに移動する
直前まで表示していた Web サイトはセキュリティで保護されていました。セキュリティで保護された Web サイトには有効な証明書があり、安全にやり取りすることができます。安全にやり取りできるということは、名前やクレジット カード番号などの情報を暗号化することによって、ほかの人に見られることなく送信できることを意味します。証明書により、このサイトの安全性が確認されます。証明書には、サイトの身元を保証する情報が含まれています。これにより、ほかのサイトが安全なサイトを装うことを防止できます。
ただし、これから移動しようとする Web サイトではセキュリティ プロトコルが使用されていないため、送受信する情報は保護されません。また、サイトには証明書がないため、目的のサイトであるかどうかを確認できません。
この Web サイトと自分のコンピュータについて検討し、このサイトを表示するどうかを決定する必要があります。
このサイトでの作業が安全であると判断できない場合は、[いいえ] をクリックしてください。

これ以上の説明は専門的になってしまうので多分「初心者*1」には理解できないでしょう。また、この説明文は短い中にもURLの真正性についての言及がきちんと成されており、必要十分であると考えます。なので、

また、セキュリティー警告を出すような状態(LocationヘッダでHTTPなページに飛ばす手法)にしたとき、パソコン初心者から「変な警告ダイアログが出るんだけど安全なの?」という何百・何千もの問い合わせに対応するだけの時間的労力も考えていただきたいです。

このような質問に対しては『そのダイアログの「詳細情報」というボタンをクリックして出てくる説明を読んでください。そのあとどうするかはあなたが判断してください』というような回答でいいと考えます。毎回答えるのが面倒なら、https://〜なページの目立つところにそのような文章を書いておいてもいいでしょう。
Internet Explorerは圧倒的なシェアを誇るだけにユーザーからの厳しい要求に応えたUIを備えており、特にこのSSL遷移周りのインターフェイスはベストプラクティスと呼ぶにふさわしい適切なものだと(ワタシは)思います。これだけ親切なUIをデフォルトで用意して、詳細な説明まで加えてくれているのに、なぜそれを回避するようなJavascriptを用意する必要があるのでしょうか。
それは、開発者やクライアント発注者がユーザーの立場に立って本当の「ユーザーフレンドリー」なインターフェイスを考えていないからです。

警告ダイアログを回避するな

もしかすると、metaのrefreshやJavaScriptで自動的にとばすのをやめて、ユーザーにクリックしてもらってHTTPSなページを抜ける以下のようなHTMLを返せばいいのかもしれないですが

そのようなページを作っても、http://〜なページへ抜けるときにはやはり警告ダイアログが出る*2ので、問題の解決にはならないと思います。
ここまで述べてきたように、Internet Explorerは説明責任を果たしています。サービス提供側はそれに沿ったインターフェイスを構築すればよいのです。また、Mozilla Firefoxは(ワタシに言わせれば)ユーザーの自己責任をデフォルトで強制していますが、ダイアログを読まないのは確かにユーザーの責任なので、それはサービス提供側が気にするべきことではありません。
というわけで、ワタシの答えは「警告ダイアログを回避するな」です。ご理解いただけたでしょうか?

*1:「初心者」という言葉の曖昧さは放置します。元記事のサイトの方とワタシで認識が共有できているわずかな可能性に期待します。

*2:但し、この場合に表示される警告ダイアログはリダイレクトを警告するものではなく、つぎのようなものになる:「セキュリティで保護された接続から保護されていない接続へ変更しようとしています。送信する情報は Web 上の他のユーザーに読み取られる可能性があります。続行しますか?」