混合コンテンツとは

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

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

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

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

混合コンテンツの 2 つのタイプ

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

画像、動画、音声などのパッシブな混合コンテンツはページの他の部分とやり取りしないため、そのコンテンツをインターセプトまたは変更する場合の、中間者攻撃の実行内容は制限されます。

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

受動的な混合コンテンツ

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

  • サイト上の画像に対する HTTP リクエストをインターセプトし、それらの画像をスワップまたは置き換えます。
  • ボタンの画像を置き換えて、ユーザーが混乱し、保存しようとしたコンテンツを削除するなどの事態を招く。
  • 画像をポルノ コンテンツに置き換えてサイトを改ざんする。
  • 商品画像を他の広告に置き換える。

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

パッシブな混合コンテンツが存在する場合、ほとんどのブラウザでは、ページ自体が HTTPS 経由で読み込まれている場合でも、ページが安全でないことを表すアドレスバーが表示されます。この動作は、こちらのデモで確認できます。

これまで、パッシブな混合コンテンツはすべてのブラウザで読み込まれていました。ブロックすると多くのウェブサイトが機能しなくなるためです。しかし、この状況は変わりつつあります。そのため、サイト上の混合コンテンツをすべて更新することが重要です。

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

Chrome が混合コンテンツを検出するか、パッシブな混合コンテンツを自動アップグレードするたびに、DevTools の [Issues] タブに詳細なメッセージがログに記録され、特定の問題の修正方法が提案されます。