混合コンテンツとは

ページの最初の HTML が安全な HTTPS 接続で読み込まれるものの、他のリソース( 画像、動画、スタイルシート、スクリプトなど)が安全でない HTTP 接続で読み込まれる場合、そのページには 混合コンテンツが含まれます。この名前は、1 つのページに HTTP と HTTPS のコンテンツが混在していることに由来します。

安全でない HTTP プロトコルを使用してサブリソースをリクエストすると、ページの セキュリティが低下します。これは、これらのリクエストが オンパス攻撃を受けやすいためです。 オンパス攻撃では、攻撃者がネットワーク接続を傍受し、 2 者間の通信を表示または変更します。攻撃者はこれらのリソースを使用してユーザーを追跡し、ウェブサイトのコンテンツを置き換えることができます。アクティブな混合コンテンツの場合、安全でないリソースだけでなく、ページ全体を完全に制御することもできます。

多くのブラウザでは混合コンテンツの警告がユーザーに報告されますが、報告が遅すぎることがよくあります。安全でないリクエストがすでに実行され、ページのセキュリティが侵害されているためです。

現在、ほとんどのブラウザでは、セキュリティ上の理由から混合コンテンツがブロックされています。ページが正しく読み込まれるように、安全でないコンテンツのリクエストを安全なコンテンツに変更してください。

混合コンテンツの 2 種類

混合コンテンツには、アクティブとパッシブの 2 種類があります。

パッシブな混合コンテンツ (画像、動画、音声など) は、ページの他の部分とやり取りしないため、中間者攻撃でコンテンツが傍受または変更された場合でも、できることは限られています。

アクティブな混合コンテンツ は、ページ全体とやり取りします。これには、スクリプト、スタイルシート、iframe、ブラウザがダウンロードして実行できるその他のコードが含まれます。アクティブな混合コンテンツに対する攻撃では、攻撃者はページに対してほぼすべての操作を行うことができます。

パッシブな混合コンテンツ

パッシブな混合コンテンツはアクティブな混合コンテンツよりもリスクは低いですが、リスクは存在します。たとえば、攻撃者は次のことができます。

  • サイトの画像の HTTP リクエストを傍受し、画像を入れ替えたり置き換えたりする。
  • ボタンの画像を置き換えてユーザーを混乱させ、保存する予定だったコンテンツを削除させる。
  • 画像をポルノ コンテンツに置き換えてサイトを改ざんする。
  • 商品画像を別の広告に置き換える。

攻撃者がサイトのコンテンツを変更しなくても、混合コンテンツのリクエストを通じてユーザーを追跡できます。また、ブラウザが読み込む画像やその他のリソースに基づいて、ユーザーがアクセスしたページや閲覧した商品を把握することもできます。

パッシブな混合コンテンツが存在する場合、ページ自体が HTTPS で読み込まれていても、ほとんどのブラウザではアドレスバーにページが安全でないことが示されます。

最近まで、パッシブな混合コンテンツはすべてのブラウザで読み込まれていました。ブロックすると多くのウェブサイトが破損するためです。現在、この状況は変わりつつあるため、サイトの混合コンテンツのインスタンスを更新することが不可欠です。

Chrome では、 パッシブな混合コンテンツが自動的にアップグレードされることがあります。 つまり、アセットが HTTP としてハードコードされていても、HTTPS で利用できる場合は、ブラウザが HTTPS バージョンを読み込みます。安全なバージョンがない場合、アセットは読み込まれません。

Chrome は、混合コンテンツを検出したり、パッシブな混合コンテンツを自動アップグレードしたりするたびに、DevTools の [問題] タブに詳細なメッセージを記録し、特定の問題を解決するためのアドバイスを提供します。

Chrome DevTools の [Issues] タブには、特定の混合コンテンツの問題とその修正方法に関する詳細情報が表示されます
安全でないリソースはそれぞれ、制限ステータスとともに DevTools に表示されます。

アクティブな混合コンテンツ

アクティブな混合コンテンツは、パッシブな混合コンテンツよりも大きな脅威となります。攻撃者はアクティブなコンテンツを傍受して書き換え、それを使用してページ全体、さらにはウェブサイト全体を完全に制御できます。これにより、別のコンテンツの表示、ユーザーのパスワードやその他のログイン認証情報の窃盗、ユーザーのセッション Cookie の窃盗、ユーザーを別のサイトにリダイレクトするなど、ページのあらゆる側面を変更できます。

アクティブな混合コンテンツのリスクは非常に高いため、ほとんどのブラウザではユーザーを保護するためにこのタイプのコンテンツがデフォルトでブロックされますが、ブラウザ ベンダーやバージョンによって動作が異なります。Chrome では、ブロックされたコンテンツを DevTools の [問題] タブで確認できます。

Chrome DevTools の [Issues] タブには、特定の混合コンテンツの問題とその修正方法に関する詳細情報が表示されます
サイトのセキュリティを強化するために、安全でないリソースの一部がブロックされます。

混合コンテンツの仕様

ブラウザは混合コンテンツの仕様に準拠しています。この仕様では、[**オプションでブロック可能なコンテンツ**] カテゴリと [**ブロック可能なコンテンツ**] カテゴリが定義されています。

リソースは、「混合コンテンツとして使用することを許可するリスクが、ウェブの重要な部分を破損するリスクを上回る場合」に、オプションでブロック可能なコンテンツと見なされます。これは、パッシブな混合コンテンツのサブセットです。

オプションでブロック可能 ではないすべての混合コンテンツはブロック可能 と見なされ、 ブラウザによってブロックされる必要があります。

近年、HTTPS の使用が大幅に増加し、 ウェブ上の明確なデフォルトになりました。これにより、ブラウザは、混合コンテンツの仕様オプションでブロック可能として定義されているサブリソース タイプを含め、すべての混合コンテンツをブロックすることを検討できるようになりました。

古いブラウザ

一部のユーザーは古いブラウザを使用している可能性があります。ベンダーが異なるブラウザ バージョンでは、混合コンテンツの処理が異なります。最悪の場合、古いブラウザやバージョンでは混合コンテンツがまったくブロックされず、ユーザーにとって安全ではありません。

すべてのリソースを安全に読み込み、混合コンテンツの問題を修正することで、コンテンツが表示されるようにし、古いブラウザでブロックされない可能性のある危険なコンテンツからユーザーを保護できます。