2017-03-17 13 views
3

私はこのことについて何も知らないので、あなたの返信でELI5をお願いします。HTTPSを.htaccessに強制する以外に、HSTSを有効にする必要がありますか?

私のプロバイダのDreamhostの指示に従って、SSL証明書をインストールしてから、これらの行を.htaccessファイルに追加して、HTTP要求をHTTPS要求に強制的に書き直させました。

# Redirect http requests to https 
RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

すべてはすなわち、正常に動作しているようだ:私はHTTPでそのドメイン下のページにアクセスしようとするたびに、それはHTTPSに書き換えられ、「セキュア」アイコンがアドレスバーに表示されます。

私の質問は、HSTSも有効にする必要がありますか?これについて読むと、以前の.htaccessファイルの変更と全く同じことをするようです。ここでan excerpt from A2 Hosting(ない私のプロバイダ)です:

HSTSは、Webブラウザが自動的に任意の 安全でない要求(のhttp://)に変更サイト、有効になっている場合HSTSに

を有効にするリクエストを確保する(https://での)。 HSTSを有効にするには が必要です。サイトの.htaccess ファイルにヘッダを追加するだけです。 Webブラウザはこのヘッダーを認識してから、あなたの介入なしに の世話をします。

彼らは.htaccessファイルにこれを追加することをお勧め:

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS 

Another tutorialを、Dreamhostのに固有のこの時間は、.htaccessファイルでHTTPSを強制するとともにHSTSを有効にすると言うが、本当に、なぜ言っていません。このページでは、若干異なるものが示唆されています:

Header set Strict-Transport-Security "max-age=31415926; includeSubDomains; preload" env=HTTPS 

「https書き換え」コードスニペットとHSTSが必要ですか?または、「httpsリライト」コードスニペットだけで十分ですか? HSTSコードが必要ですか?その場合、私のポストのHSTSコードの2行の違いは何ですか?

答えて

5

HSTSは、ブラウザは、デフォルトでhttps経由で接続するために知ることができますが、異なるフラグの一つ一つは少し違う何かを行います意味

  • includeSubdomains

をあなたのサイトがオンになっている場合にmydomain.comの場合、ポリシーはすべてのサブドメインに適用されます(foo.mydomain.combar.mydomain.comなど)。これは含まれていません。このポリシーは問題の正確なドメインにのみ適用されます。

  • プリロード

HSTSは、概念的に、それはあなたがhttpsれているサイトを持っていることを知らないので、ブラウザがhttpスキームにあなたのサイトに連絡しようとする誰かの種類mydomain.com初めて素晴らしいですが悪質なバージョンのサイト(別名TOFUの問題)にMITMの攻撃者ルームを提供します。 これを回避するには、既定でhttpsに連絡する必要があるサイトのブラウザの一覧が集中していますが、その一覧に自分自身を追加するには、そのヘッダーにpreloadフラグが必要です。この詳細についてはhereをご覧ください。

+0

2つのHSTSコードの説明に感謝します。しかし、私は "両方"が必要かどうか尋ねたときに私の質問が明らかでなかったと思います。私が「両方」を意味するのは、(私の質問の最上位にある)リダイレクトスニペットとHSTSコードが必要ですか?あるいは、私はただ一つだけを選ぶべきですか?もしそうなら、どちらが、なぜですか? – AlwaysLearning

+1

@AlwaysLearning両方を実行します。リダイレクトのないHSTSは役に立たず、HSTSなしのリダイレクトはMan-in-the-middle攻撃によって傍受される可能性があります。 –

+0

リダイレクトのないHSTSは、ユーザーがHSTSプリロードをサポートする最新のブラウザを使用している場合にのみ有効です。 – EricLaw

2

スキーム(httpまたはhttps)が明示的に指定されていない場合、デフォルトはhttpです。

したがって、URLを入力するほとんどの訪問者にはスキームが含まれていないため、HTTPバージョンに移行するため、リダイレクトをデフォルトのhttpsバージョンにリダイレクトする必要があります。

HTTP Strict-Transport-Security(HSTS)はセキュリティメソッドです。常にがhttps上にのままになるようにします。リダイレクトの必要性を排除することは実際には意図されていません。特にHSTSは、Webブラウザに「HTTP応答ヘッダーを使用してメッセージを送信して、次のX時間だけこのサイトにhttpsを使用してください」と言うように動作します。このメッセージは、httpsを介してサイトにアクセスしたときにのみ送信する必要があります。したがって、最初にリダイレクトしないと、多くの訪問者があなたがhttpsサイトを持っていることに気が付かず、HSTSの指示を得られないことさえあります。

HSTSは、ウェブサイトのデフォルトをhttpsに変更する方法として、また、中堅(MITM)攻撃を防ぐために、http:ハッカーのWi-Fiネットワークに接続して銀行のウェブサイトにアクセスすると、httpsで完了していればこの接続をハイジャックすることはできませんが、httpで完了していればその接続をハイジャックすることができます。リダイレクトを起こして、httpを維持し、銀行との間のすべてのメッセージを傍受します。

ウェブブラウザのコードでHSTS命令を「プリロード」することができます。これにより、HSTS命令を得るためにhttpsでサイトにアクセスする必要がなくなります。これは、基本的にはこれから戻ってくる方法はないと言わざるを得ないでしょう。そして、これはあなたが本当にHSTSを理解している場合にのみ考慮されるべきです。 many, many, many requests to remove sites from Preload listにはChrome(他のブラウザでは保証されていません)の最低3か月間がかかります。その間、httpsにアクセスできない場合は、その間は完全にアクセスできなくなります。だからここに本当の危険がある!特に、一部のサイトがhttps(例:www.example.com)で配信されているものの、一部のサイト(たとえばintranet.example.com)が配信されていない場合これはHSTSの危険性でもありますが、プリロードではさらに危険です。

その他の注意点として、多くのWebエージェントはHSTSを使用せず、特にプリロードリスト(たとえば、検索エンジンクローラ、古いブラウザなど)を使用しません。したがって、HSTSは、リダイレクトの代わりに、リダイレクトの代わりに使用する必要があります。

HSTSはすべてのサイトで使用する必要があります(一度httpを使用すると停止すると)、ほとんどのセキュリティ対策と同様に、独自のリスクが伴います。したがって、展開する前に理解しておいてください。私はそれとリスクを説明することなくそれをオンにするサイトやチュートリアルが嫌いです。理論的には、HSTSを使用しているサイトはリダイレクトする必要がなくなりますが、実際には最初の訪問やHSTSを理解したり実装していない代理店が必要になります。

  • を常にリダイレクトを使用します。要約すると

  • HSTSを強く検討しますが、最初にそれを読んでから、最低限の年齢から始まり、包含サブドメインやプリロードなしで - 彼らが何を意味するかを本当に理解するまで、始めてください。
  • 危険度の高いサイトを実行している場合は、ハイレベルのセキュリティとしてサイトをHSTSプレロードリストに登録することを検討してください。あなたが本当にHSTSを理解し、あなたがこのレベルのセキュリティを必要としているように感じる場合にのみ、これをしてください。
関連する問題