HSTS (Strict-Transport-Security) の仕様を読んでいると、セクション 7.2に、https ではなく http 経由でアクセスしたときにヘッダーを送信することに対する差し止め命令が表示されます。
HSTS ホストは、非セキュアなトランスポートを介して伝達される HTTP 応答に STS ヘッダー フィールドを含めてはなりません。
どうしてこれなの?これに違反した場合、どのようなリスクがありますか?
HSTS (Strict-Transport-Security) の仕様を読んでいると、セクション 7.2に、https ではなく http 経由でアクセスしたときにヘッダーを送信することに対する差し止め命令が表示されます。
HSTS ホストは、非セキュアなトランスポートを介して伝達される HTTP 応答に STS ヘッダー フィールドを含めてはなりません。
どうしてこれなの?これに違反した場合、どのようなリスクがありますか?
あなたが解決しようとしている特定の問題があるのか 、それとも単に好奇心のために尋ねているのかはわかりませんが、これはhttp://security.stackexchange.comで尋ねたほうがよいかもしれません
あなたと同じように、HTTP 経由でこれを送信するサーバーからの脅威は見えません。意味がわかりませんが、正直言ってリスクがあるかどうかはわかりません。ヘッダーを適切に設定できない場合を除いて、HSTS を実装する準備ができていない可能性があります。設定を誤ると危険になる可能性があるからです。
はるかに大きな危険は、ブラウザーが HTTP 経由で受信した HSTS ヘッダーを処理する場合であり、セクション 8.1 では無視しなければならないと明示的に述べています。
安全でないトランスポートで HTTP 応答を受信した場合、UA は現在の STS ヘッダー フィールドを無視する必要があります。
ここでのリスクは、悪意のある攻撃者 (または誤って構成されたヘッダー) が、ブラウザーが誤って処理した場合に、HTTP のみの Web サイト (または混合サイトの HTTP のみの部分) をオフラインにする可能性があることです。これにより、ヘッダーの有効期限が切れるか、サイトが HTTPS を実装するまで、そのユーザーに対して実質的に DoS が発生します。
さらに、ブラウザーが HTTPS ではなく HTTP 経由でこのヘッダーを受け入れた場合、MITM 攻撃者が max-age を 0 に設定してヘッダーを期限切れにする可能性があります。たとえば、https に長い HSTS ヘッダーが設定されている場合: //www.example.comしかし、攻撃者はhttp://example.comを介して includeSubDomain を含む max-age=0 ヘッダーを公開でき、ブラウザーがそれを誤って処理したため、HTTPS が www に与える保護を効果的に削除することができました。サイト。
これらの理由から、クライアント (つまり Web ブラウザー) がこれを正しく実装し、HTTP 経由で提供される場合は HSTS ヘッダーを無視し、HTTPS 経由でのみ処理することが非常に重要です。これは、サーバーがこれを HTTP 経由で送信してはならない、と RFC が述べているもう 1 つの理由である可能性があります。これは、ブラウザーがこれを間違って実装した場合に備えてですが、正直なところ、それが発生した場合、MITM 攻撃者が追加する可能性があるため、そのブラウザーはすべての HTTP のみの Web サイトを危険にさらしています。上記の通りです。
危険なのは、Web サイト自体の可用性です。Web サイトが (現在または将来的に) HTTP では応答できるが、HTTPS では応答できない場合、ブラウザーはサイトにアクセスできなくなります。
HTTPS 接続を介して STS ヘッダーのみを提供することにより、サイトは、少なくとも現時点ではアクセスできないサイトにブラウザーを向けていないことを保証します。もちろん、max-age が 3 か月に設定されていて、HTTPS サイトが明日壊れたとしても、結果は同じです。これは単なる増分保護です。
サーバーがリクエストの特性から、HTTP と HTTPS のどちらを介してアクセスされているかを明確に判断できないが、何らかの方法で HTTPS を介してのみアクセスできるように Web サイトを設定していると思われる場合 (たとえば、nginx プロキシでの SSL/TLS ターミネーションが原因)、常にヘッダーを提供しても安全なはずです。しかし、両方を提供したい場合、たとえば、サーバーから HTTP->HTTPS リダイレクトを提供したい場合は、プロキシが接続についてどのように通知するかを調べ、その上で STS ヘッダー応答のゲーティングを開始します。
(この説明をしてくれたDeirdre Connollyに感謝します!)