DigiCert証明書の正規代理店株式会社アールエムエス
DigiCert サーバー証明書利用団体
  1. ホーム
  2. HTTPS入門
  3. 混在(ミックス)コンテンツと CSP

混在(ミックス)コンテンツとCSP

証明書が正しく設定されていても、Webコンテンツに危険な要素が入り込む可能性があります。
まず排除しなければならないのが、混在(ミックス)コンテンツです。そして、CSP(Content Security Policy)でポリシーを確定し安全を確保します。

混在(ミックス)コンテンツ

Webページは htmlデータ、imgデータ、cssデータ、JavaScriptデータなどの複数のコンテンツによって構成されています。
HTTPSのページにHTTPで配信されたコンテンツが含まれている場合、htmlデータがHTTPSで配信されていても、そこに含まれるHTTPのコンテンツは攻撃者に読まれたり変更されたりする恐れがあります。
HTTPSのページに含まれるHTTPで配信されたコンテンツを、「混在コンテンツ」(mixed content) と呼びます。

HTTPはWebサーバーからブラウザへ情報を転送するシステムです。
HTTPは安全ではなく、HTTPプロトコルで配信されているページを訪れた場合、そのサイトとの接続は盗聴や攻撃に対して開放されています。
そのため、HTTPSのページにHTTPで配信されたコンテンツが含まれている場合、攻撃者はHTTPプロトコルで配信されているコンテンツを利用して、偽のコンテンツでサイトを書き換えたり、ユーザーの個人情報を取得したり、安全でないサイトにリダイレクトしたりすることができます。

混在(ミックス)コンテンツの種類

混在(ミックス)コンテンツは、HTTPプロトコルで配信されるコンテンツの危険度によって混合アクティブコンテンツと混在パッシブコンテンツに分類できます。

memo混合アクティブコンテンツ(混在スクリプトコンテンツ)
混合アクティブコンテンツは、HTTPSページ全体や一部の機能を書き換えることのできるコンテンツです。
アクティブなコンテンツには、JavaScript、CSS、object、XMLHttpRequest (XHR)、iframe、fontがあげられます。
この種のコンテンツはHTTPSページの表示を変更することができるだけでなく、ユーザーの機密データにアクセスしたりできます。そのため、これらのコンテンツがHTTPプロトコルで配信されている場合、情報の漏洩や、攻撃のきっかけを与えることになり非常に危険です。

memo混合パッシブコンテンツ(混在ディスプレイコンテンツ)
混合パッシブコンテンツは、HTTPSページ全体の機能を書き換えることはできないコンテンツです。
パッシブコンテンツの代表例がimgです。
攻撃者はHTTPで配信された画像を書き換えることで、HTTPSの一部を改ざんすることができます。
また、画像のHTTPヘッダーを読み取ることができるので、書き換えだけにとどまらず、Cookieからユーザー情報を取得される可能性があります。

ほとんどのブラウザは、混合アクティブコンテンツはブロックしても混合パッシブコンテンツは鍵マークの表示を変える程度の控えめな警告にとどめています。
しかし、安全なWebサイト運営のためには、すべての混在(ミックス)コンテンツを排除すべきです。

混在(ミックス)コンテンツを取り除く

混在(ミックス)コンテンツを発見し取り除く方法はいくつもあります。
ここでは代表的な方法を紹介します。

ソースをチェック
混在(ミックス)コンテンツを取り除く最も基本的な方法は、htmlのソースをチェックすることです。
Unix系の環境であれば、grepコマンドで「パターン」を検索します。
grep パターン -r *.html
Powershell環境では、
Select-String パターン (dir -recurse *.htm)
コンテンツの種類ごとの「パターン」は以下のようなものです。
  • 画像:「src="http:」
  • スタイルシートとフォント:「<link href="」
  • CSS:「url("http:」
ブラウザを利用
ページ数が少ない場合は、ブラウザのディベロッパーツールなどで混在(ミックス)コンテンツを見つけることができます。
Chromeでの利用方法は、以下の「混合コンテンツの防止」を参照してください。
外部サイト:混合コンテンツの防止
「mixed-content-scan」コマンドを使う
サイトの規模が大きな場合や、「パターン」部分記述が一定しない場合、そして、CMSを利用している場合は、PHPが利用できる環境であれば「mixed-content-scan」コマンドを使うこともできます。
例えば、example.com をチェックしたい場合のコマンドは以下のようになります。
mixed-content-scan https://example.com
結果は、URLがコンソール上にMCS.NOTICE、MCS.INFO、MCS.ERROR、MCS.WARNINGのタグつきで表示されます。
「mixed-content-scan」の利用のためには、まずPHPの依存関係管理ツールComposerをインストールする必要があります。
ComposerはUnix環境でも、Windows環境でも利用できます。
インストール方法は、以下のCOMPOSERのサイトを参照してください。
外部サイト:COMPOSER
「mixed-content-scan」は以下のコマンドでインストールできます。
composer global require bramus/mixed-content-scan:~2.8
詳しくは、以下の「mixed-content-scan」を参照してください。
外部サイト:mixed-content-scan

CSP(Content Security Policy)

CSP(Content Security Policy)では、混在(ミックス)コンテンツの排除に限らず、サイトのセキュリティポリシーを幅広く設定できます。
設定されたポリシーはブラウザに伝えられます。IE以外のブラウザではほとんどのポリシーが受け入れられます。
ポリシーはHTTPヘッダーで設定します。書式は以下です。

Content-Security-Policy: policy

以下のように設定すれば、exsample.com に混在(ミックス)コンテンツがあっても、ブラウザが混在(ミックス)コンテンツを除いて表示します。

Content-Security-Policy: default-src https://example.com

CSPは、Webサーバーの設定ファイルで指定する以外に、htmlファイルの<meta>タグを使って以下のように指定できます。

<meta http-equiv="Content-Security-Policy" content="default-src https://example.com">

CSPのContent-Security-Policy-Report-Onlyを設定し、サイトのセキュリティを監視する方法の詳細は、以下のページを参照してください。

CSPの詳細は以下を参照してください。

残る危険

外部のコンテンツをHTTPSプロトコルで読み込む場合は注意が必要です。
外部のHTTPSのTLS設定レベルが不十分な場合、その外部サイトから読み込まれたコンテンツが原因となって、セキュリティ上の脆弱性が生じる可能性があります。
例えば外部サイトが汚染されている場合、外部サイト管理者も気づいていない悪意のあるJavaScript等を読み込んでしまう可能性があります。
そのため、外部サイトのコンテンツを読み込む設定をしている場合は、その外部サイトのセキュリティレベルを定期的にチェックする必要があります。
外部サイトのセキュリティチェックには、「Qualys SSL LABS SSL Server TestでのSSLサイト評価」がおすすめです。具体的な利用方法は、サポートページを参照してください。

全ページ HTTPS 化関連情報

SSL サーバ証明書とは?
30日間テスト証明書
30日間返金保証制度あり!
コードサイニング証明書
ドキュメントサイニング証明書
デジタル証明書ニュース
HTTPS入門
digicert.comトピックス&ニュース