現在、アプリケーションにはHTTPSへのHTTPリダイレクトがあります。ここで、セキュリティ上の理由からこのHTTPバインディングを完全に削除し、ユーザーにIISで[SSLを要求する]を構成することでHTTPSのみを使用させます。
問題は、このHTTPリダイレクトページを利用するユーザーの約10%がまだいるため、HTTPリダイレクトをオフにするだけではできないことです。多くのユーザーがヘルプデスクに電話をかけてしまう可能性があります。
現在のアイデアは、最初のリリースで、使用する新しいリンクに関する情報を含む新しいページへのHTTPリダイレクトページリンクを用意することです。次のリリースでは、完全な「SSLが必要」をオンにすることができます。
このソリューションは問題ないようですが、情報ページへのHTTPリダイレクトとSSLを同時に要求する方が適切です。これは可能ですか?
この問題に関するその他の提案も大歓迎です。ありがとう。
[SSLが必要]をオンにすると、HTTPリクエストはすぐに失敗します。
同じことをする前に(ASP.NETを使用して)使用した1つのトリックは、既定のページでプロトコルを確認してから、わかりやすい警告を発行することでした。
If Not Request.IsSecureConnection Then
loginform.visible = False
ltl_warning.Text = "Non-secure connections will be disabled in one month, please use the secure address only: https://mysite.com"
End If
「SSLが必要」は引き続きSSLなしで応答するため、MITM攻撃は依然として可能です。
サイトをセキュリティで保護するには、リダイレクトを使用してから Strict-Transport-Security header を送信する必要があります。これにより、最初にアクセスした後、ユーザーのブラウザーはSSLを使用せずに接続を試みません。
Bradlis7は、ここで事実上正しい唯一の答えを持っています。 MITMが心配な場合は、Webサイトで何をしても問題は解決しません。サイトでHTTPを完全に無効にすることができます。クライアント側で動作する中間者エージェントがいる場合、「はい、間違いなくHTTPサイトがあります。私に従ってください」と表示されます。
実際には、単にすべてのHTTPトラフィックをHTTPSに転送するだけで、ユーザーにとってはるかに良い結果が得られます。また、私の意見では、要求されたHTTP URLはサードパーティのMITMによって操作された可能性があるため、HTTPS以外のURLの要求は、要求されたURLの動的バージョンではなく、ホームページ(できればメモ付き)に転送する必要があります。あなたは心配しています。
403.htmページを次のように置き換えることにより、SSLを要求してリダイレクトすることが可能です。
<html>
<head><title>Redirecting...</title></head>
<script language="JavaScript">
function redirectHttpToHttps()
{
var httpURL= window.location.hostname + window.location.pathname + window.location.search;
var httpsURL= "https://" + httpURL;
window.location = httpsURL;
}
redirectHttpToHttps();
</script>
<body>
</body>
</html>
この解決策が、リダイレクトによって修正しようとしているセキュリティ問題を考慮しているかどうかはわかりません。