web-dev-qa-db-ja.com

HTTPSに加えてHTTPを提供する必要があるのはなぜですか?

新しいウェブサーバーをセットアップしています。 TLS/HTTPSに加えて、 Strict-Transport-Security およびその他のHTTPS強制メカニズムの実装を検討しています。

これらはすべて、私が提供しているという前提に基づいているようですhttp://www.example.com に加えて https://www.example.com。 HTTPSのみを提供しないのはなぜですか?つまり、HTTPを提供するセキュリティベースの理由があります-たとえば、誰かがhttp://www.example.com HSTSを設定しない場合

110
david.libremone

Httpsだけを提供しないのはなぜですか?

主な理由は、ブラウザのデフォルトの動作後方互換性です。

デフォルトの動作

エンドユーザー(つまり、プロトコルやセキュリティの知識がない)がブラウザにWebサイトのアドレスを入力すると、ブラウザはデフォルトでHTTPを使用します。ブラウザがこの動作を選択する理由の詳細については、 この質問 を参照してください。

したがって、ユーザーがWebサイトにアクセスできない可能性があります。

下位互換性

古いシステムと古いブラウザを使用している一部のユーザーはHTTPSをサポートしていないか、より可能性が高い、 ルート証明書 の最新データベースがない、または一部のプロトコルをサポートしていない可能性があります。

その場合、彼らはウェブサイトにアクセスできないか、セキュリティ警告が出ます。エンドユーザーのセキュリティがHTTPSを強制するのに十分重要かどうかを定義する必要があります。

多くのWebサイトはまだHTTPをリッスンしていますが、自動的にHTTPSにリダイレクトし、really古いブラウザを使用しているユーザーを無視します。

hSTSを設定しないと、誰かがなりすまし http://www.example.com になりますか?

攻撃者がなりすましをしたい場合http://www.example.com、ドメインを制御するか、何らかの方法でIPアドレスを制御する必要があります。

攻撃者が中間者攻撃を実行する可能性はありますか?

その場合はい、ただしHSTSの有無にかかわらず:

  • HSTSなし:攻撃者は簡単にサーバーとユーザーの中間にいて、アクティブ(つまり、コンテンツを変更)またはパッシブ(つまり、 、盗聴)

  • HSTSを使用する場合:ユーザーが初めてHTTPを使用してサイトにアクセスしようとしたときに、攻撃者がユーザーにHTTPの使用を強制する可能性があります。ただし、攻撃者が攻撃を実行できる時間枠は限られています。

あなたは何をすべきですか?

多くのウェブサイトと同様に、HTTP接続を許可し、サーバーがユーザーをHTTPSバージョンにリダイレクトするようにする必要があります。このようにして、ブラウザーのデフォルトの動作をオーバーライドし、ユーザーがHTTPSバージョンを使用するようにします。

適切なプロトコルまたはルート証明書のない古いシステムはサイトにアクセスできません(または少なくとも警告が表示されます)が、ユーザーベースによってはこれは問題になりません。

結論

HTTPを無効にすると、害が及ぶだけでなく、それは本当により多くのセキュリティを提供しません。

リソースを保護するために追加されたセキュリティは、ほとんどのユーザーがリソースにアクセスできない場合は役に立ちません。ブラウザのデフォルトがHTTPであり、HTTP接続をリッスンしていないためにエンドユーザーがWebサイトにアクセスできない場合、どのような利点がありますか?

HTTPSバージョンへのHTTP 301リダイレクションを実行するだけです。

関連する質問

69
Ronny

使いやすさの理由から、すべてのHTTP URLからHTTPSへのリダイレクトを提供する必要があります。そうしないと、ブラウザのURLバーにexample.com/some/pageを入力するだけの初めての訪問者は、接続エラーで迎えられます。

リダイレクトを提供しても、脆弱性が高まることはありません。ブラウザにHSTSエントリがないユーザーは、とにかくHTTPリクエストを行います。 HTTPに実際のサービスがあるかどうかは、真ん中の男には関係ありません。

したがって、HTTPサーバーを実行する必要がありますが、リダイレクト以外は何も応答する必要はありません。

161
Anders

賛成投票は非常に良いです。 HTTPを完全に停止すると、セキュリティに大きな影響を与えることなく、使いやすさが犠牲になります。

ただし、HSTS Preloadオプションを使用してそれを軽減できます。ウェブサイトをプリロードするということは、ドメインをブラウザーベンダーに登録することを意味します。ブラウザーベンダーは、ブラウザーをハードコーディングして、HTTPS経由でのみウェブサイトにアクセスします。つまり、ユーザーがHTTP経由でWebサイトにアクセスしようとすると、ブラウザーは要求をHTTPSに変更します。ユーザーは、セキュリティで保護される前にHSTSヘッダーを取得する必要はありません。彼らは常に安全なチャネルを介してあなたに接続します。

これは、HTTPSのみのWebサイトのリストを更新していないブラウザを使用しているユーザーを保護しません。プリロードを使用している場合でも、古いブラウザまたは更新されていないブラウザを使用している少数の人に対しては、HTTPを停止しないことをお勧めします。

しかし、注意してください、プリロードは永続的です!プリロードリストから降りることは非常に困難です。

プリロードリストを取得するには: https://hstspreload.org/

20
Taul

する必要はありません。

一部の古いブラウザーとオペレーティングシステム(これらは通常連携して動作します)には新しい証明書ルート認証局がありませんが、通常は新しいHTTPS標準もサポートしていないため、何も失われません。

HTTPSやカスタムスクリプトなどをサポートしていないデバイスを使用している可能性があります。

DNSレコードはあなたに属しており、Aレコードは(完全な世界では)特定のIPアドレスを指しているため、誰もHTTPを偽装することはできません。

互換性を維持するためだけに行います。それだけです。

5
Root

下位互換性をサポートするためにのみ、HTTPをサポートする必要があります。また、バックエンドサーバーでHTTPSに適切にリダイレクトするようにしてください。これを実装する最良の方法は、ホームページまたは機密情報を持たないページにのみHTTPサポートを提供することです。認証後にユーザーがアクセスできるページへのHTTPリクエストをサポートしないでください。

サーバーの機密データにアクセスしているデバイス(IoT)がある場合でも、それらにTLSを使用するように強制する必要があります(現在の多くのデバイスは、証明書を保存してTLS接続を作成できます)。 3.0より前のSSLバージョンには、プードルバグなどの多くの脆弱性があることに注意してください。したがって、Webサーバーから以前のすべてのバージョンを無効にし、> TLS 1.1のみを許可します。

HSTSを実装するのは良いことです。 HPKPをサイトに実装する可能性についても検討することをお勧めします。

3
user3496510

2つの目的で、httpsに加えてhttpを使用します。

  1. Https Webサイトへのhttpリダイレクトを作成します。これは、誰かがサイトの名前をブラウザに入力した場合に使用します。
  2. 誰かがドットコム名を使用せずにウェブサイトにアクセスしようとした場合のために、http用に別のウェブサイトを作成します。 (実際のユーザーはこれを行いません。)このWebサイトには、単純なComing Soonメッセージが表示されます。また、IPテーブルの拒否リストにIPアドレスを追加して、そのIPをサーバーから永久に禁止します。この 止まる masscan を使用しているハッカーの速度を低下させます。 (ブロックしていたすべてのIPのユーザーエージェント文字列を保存してMassCanを見つけ、それがGoogleスキャンではなかったことを別のプログラマーに証明しましたが、実際には、IPスキャンを行っている外国のハッカーが、ハッキングを試みるWebサーバーを探しています)。
0
Russell Hankins