web-dev-qa-db-ja.com

HTTPSを介したHSTSの追加のセキュリティ

[〜#〜] hsts [〜#〜] サーバーがHTTPSを使用するように構成されている場合でも使用できますか(HTTPが使用されている場合、Apacheの書き換えルールによりHTTPSに変換されます)?

また、CSSや画像などのリソースでも、コンテンツタイプがtext/htmlの場合でもHSTSを使用する必要がありますか?

28
Novice User

はい、SSLをサイト全体で使用している場合は、 [〜#〜] hsts [〜#〜] を有効にすることをお勧めします。

HSTSは、ユーザーをhttpに切り替えてユーザーを攻撃する中間者攻撃を無効にするための重要なセキュリティ対策です。たとえば、sslstripはそのような攻撃を仕掛けるためのよく知られたツールです。この種の攻撃の詳細については、次の質問を参照してください: sslstrip攻撃を阻止する方法オプションSSLstripに対して防御しますか? 、および この答え

HSTSはブラウザに通知します。このサイトではHTTPを使用しないでください。 HTTPS経由でのみアクセスしてください。したがって、HSTSを有効にするには、サイトがHTTPSで、HTTPSのみで動作することを確認する必要があります。これには、HTML、CSS、JavaScript、すべてが含まれます。サイトのすべてのCSSとJavaScriptがHTTPS経由で利用できることを確認してください。また、HTTPS経由ですべてを参照するようにページを変換することをお勧めします(一部のブラウザーで警告やセキュリティの問題が発生する可能性があるため、HTTP経由で他のJavaScriptまたはCSSリソースを読み込まないようにすることをお勧めします)。

たとえば、サイトがwww.example.comとページがありますhttps://www.example.com/buy.htmlこれには、サイトのJavascriptが含まれています。 JavaScriptファイルがHTTPS URLで利用できることを確認する必要があります(例:https://www.example.com/library.js)。 HTTPS URL(例:<SCRIPT SRC="https://www.example.com/library.js">)。

追伸また、使用するすべてのCookieにsecureフラグを設定することをお勧めします。

15
D.W.

はい、厳密なトランスポートセキュリティは本当の利点を提供します。

HSTSは、HTTPS経由でのみサーバーと通信するようにブラウザーに指示します。ブラウザがサーバーからのHSTSヘッダーを初めて見るとき、それはそれを記憶しています。ユーザーが再びサイトにアクセスすると、ブラウザはすべての通信がHTTPS経由で行われるように強制します。これは、攻撃者がサイトへの最初のアクセス時にヘッダーを削除しない限り機能します。

これにより、SSLストリッピング攻撃(中間者攻撃の一種)が防止され、SSLリソースではなくクリアテキストリソースがユーザーに提示されます。通常、ユーザーには警告が表示されず、ほとんどの「平均的な」ユーザーは、SSL南京錠や緑/青のハイライトがURLバーに表示されないことに気づきません。 HSTSの場合、ブラウザはブラウザが独自のセキュリティポリシーに違反しようとしていることをすぐにユーザーに警告します。

  1. クライアントはサーバーへのクリアテキスト接続を作成します。
  2. サーバーは、HSTSヘッダーが設定されたHTTPSアドレスへのリダイレクトで応答します。
  3. クライアントとサーバーはSSLを介して通信します。
  4. セッションは終了します。
  5. クライアントは後で戻ってきて、ブラウザはこのドメインのHSTSフラグを保存しました。
  6. 攻撃者はSSLストリップ攻撃を実行しようとし、クライアントにクリアテキストを提供します。
  7. クライアントはHSTSポリシーがこれを許可しないことを認識し、ユーザーに警告します。

セキュリティをさらに高めるために、HSTSをDNSSECのオプションとして実装し、HSTSヘッダーがDNSルックアップの一部として設定されるように提案している人もいます。 DNSSECは、事前に配布された認証局の証明書を通じて強力なセキュリティを提供するため、攻撃者がサイトへの最初のアクセスで積極的にSSLストリップを試みている場合でも、HSTSメカニズムを無効にすることは非常に困難です。

22
Polynomial