混合コンテンツは、TLSで保護されたサイトに、セキュリティで保護されていないHTTPプロトコルを介して読み込まれる要素が含まれている場合に発生します。これにより、攻撃者が悪用できる脆弱性が作成されます。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
TLS(SSLも呼ばれます)を使用すると、インターネット通信が暗号化され、より安全なブラウジング体験を提供できます。TLSで暗号化されているサイトはURLに「http://」ではなく「https://」が含まれているため、ユーザーは簡単に識別することができます。ただし、場合によってはHTTPSサイトには平文のHTTPプロトコルを使用して読み込まれるいくつかの要素を含めることもできます。これは「HTTP over HTTPS」とも呼ばれる、混合コンテンツと呼ばれる状態を生み出します。
混合コンテンツの場合、ユーザーはHTTPSで保護されたサイトにいるため、安全で暗号化された接続を利用しているように見えますが、ページの暗号化されていない要素は脆弱性を作成し、ユーザーは不正な追跡やオンパス攻撃などの悪意のある行為にさらされます。脆弱性の深刻度は、混合コンテンツがパッシブかアクティブかによって異なります。
パッシブ/ディスプレイ混合コンテンツ:この場合、非暗号化HTTPコンテンツは、サイト上のカプセル化された要素(画像や動画など)で、ページのほかの部分とは対話できない部分に制限されます。たとえば、攻撃者はHTTP経由で読み込まれた画像をブロックまたは置換できますが、ページの残りの部分を変更することはできません。
アクティブな混合コンテンツ:この場合、Webページ全体とやり取りして変更できる要素または依存関係は、HTTPを介して提供されます。これらには、JavaScriptファイルやAPIリクエストなどの依存関係が含まれます。
アクティブな混合コンテンツは、パッシブ/ディスプレイ混合コンテンツよりも深刻な脅威です。侵害/危害を受けた場合、攻撃者はWebページ全体を乗っ取ったり、ログイン資格情報などの機密性の高いユーザー入力を収集したり、ユーザーに対してなりすましページを提供したり、ユーザーを攻撃者のサイトにリダイレクトしたりできます。
最新のWebブラウザのほとんどは、混合コンテンツに対して開発者コンソールで警告を提供し、より危険な種類の混合コンテンツをブロックします。各ブラウザには独自のルールセットがありますが、一般的に、アクティブな混合コンテンツはブロックされる可能性が非常に高くなります。
パッシブ/ディスプレイ混合コンテンツは脅威の少ないものですが、攻撃者がプライバシーを侵害してユーザーアクティビティを追跡する機会を提供します。さらに、多くのブラウザは一部の形式のパッシブな混合コンテンツを許可し、混合コンテンツの警告は開発者コンソールでのみユーザーに提供するため、多くのユーザーは混合コンテンツにさらされていることに気付かないでしょう。
古くなったWebブラウザのユーザーは、これらのブラウザが混合コンテンツをまったくブロックしない可能性があるため、特に脆弱です。
残念ながら多数の人気Webサイトが、何らかの形で混合コンテンツを提供しています。混合コンテンツをすべてブロックすると、Webブラウザがユーザーに配信できるのは、非常に狭いバージョンのWebになります。より多くのWebサイトがこの問題を解決するまで、ブラウザは混合コンテンツのそれほど深刻ではない形式のいくつかを許可することにより妥協する必要があります。
Web開発者は、混合コンテンツを排除する責任を負います。時間が経つにつれて、Webブラウザは混合コンテンツに関してますます制限が厳しくなり、この傾向は続くだけです。したがって、開発者がWebブラウザでサイトの表示を続けたい場合、混合コンテンツを排除することが不可欠です。
混合コンテンツの修正は非常に単純です。Web開発者は、ページ上のすべてのリソースがHTTPS経由でロードされるようにする必要があります。実際には、現代のWebサイトはさまざまな場所からいくつかの異なるリソースをロードすることが多いため、これは難しい場合があります。
開発者がページ上の混合コンテンツのすべてのインスタンスを見つけるための優れたツールは、Google Chrome開発者コンソールです。開発者は、「http://」URLを使用してロードされるAPI呼び出しやライブラリなどのリソースのインスタンスのソースコードを確認することもできます。場合によっては、ソリューションは単に「http://」URLを「https://」に置き換えるだけのこともあります。ただし、最初に、そのリソースのHTTPSバージョンが使用可能であることを確認する必要があります。リソースの暗号化されたバージョンが利用できない場合は、置き換えるか完全に削除する必要があります。