証明書が正しく設定されていても、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プロトコルで配信されるコンテンツの危険度によって混合アクティブコンテンツと混在パッシブコンテンツに分類できます。
混合アクティブコンテンツは、HTTPSページ全体や一部の機能を書き換えることのできるコンテンツです。
アクティブなコンテンツには、JavaScript、CSS、object、XMLHttpRequest (XHR)、iframe、fontがあげられます。
この種のコンテンツはHTTPSページの表示を変更することができるだけでなく、ユーザーの機密データにアクセスしたりできます。そのため、これらのコンテンツがHTTPプロトコルで配信されている場合、情報の漏洩や、攻撃のきっかけを与えることになり非常に危険です。
混合パッシブコンテンツは、HTTPSページ全体の機能を書き換えることはできないコンテンツです。
パッシブコンテンツの代表例がimgです。
攻撃者はHTTPで配信された画像を書き換えることで、HTTPSの一部を改ざんすることができます。
また、画像のHTTPヘッダーを読み取ることができるので、書き換えだけにとどまらず、Cookieからユーザー情報を取得される可能性があります。
ほとんどのブラウザは、混合アクティブコンテンツはブロックしても混合パッシブコンテンツは鍵マークの表示を変える程度の控えめな警告にとどめています。
しかし、安全なWebサイト運営のためには、すべての混在(ミックス)コンテンツを排除すべきです。
混在(ミックス)コンテンツを発見し取り除く方法はいくつもあります。
ここでは代表的な方法を紹介します。
混在(ミックス)コンテンツを取り除く最も基本的な方法は、htmlのソースをチェックすることです。
Unix系の環境であれば、grepコマンドで「パターン」を検索します。
grep パターン -r *.html
Powershell環境では、
Select-String パターン (dir -recurse *.htm)
コンテンツの種類ごとの「パターン」は以下のようなものです。
ページ数が少ない場合は、ブラウザのディベロッパーツールなどで混在(ミックス)コンテンツを見つけることができます。
Chromeでの利用方法は、以下の「混合コンテンツの防止」を参照してください。
サイトの規模が大きな場合や、「パターン」部分記述が一定しない場合、そして、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のサイトを参照してください。
「mixed-content-scan」は以下のコマンドでインストールできます。
composer global require bramus/mixed-content-scan:~2.8
詳しくは、以下の「mixed-content-scan」を参照してください。
CSP(Content Security Policy)では、混在(ミックス)コンテンツの排除に限らず、サイトのセキュリティポリシーを幅広く設定できます。
設定されたポリシーはブラウザに伝えられます。IE以外のブラウザではほとんどのポリシーが受け入れられます。
ポリシーはHTTPヘッダーで設定します。書式は以下です。
以下のように設定すれば、exsample.com に混在(ミックス)コンテンツがあっても、ブラウザが混在(ミックス)コンテンツを除いて表示します。
CSPは、Webサーバーの設定ファイルで指定する以外に、htmlファイルの<meta>タグを使って以下のように指定できます。
CSPのContent-Security-Policy-Report-Onlyを設定し、サイトのセキュリティを監視する方法の詳細は、以下のページを参照してください。
CSPの詳細は以下を参照してください。
外部のコンテンツをHTTPSプロトコルで読み込む場合は注意が必要です。
外部のHTTPSのTLS設定レベルが不十分な場合、その外部サイトから読み込まれたコンテンツが原因となって、セキュリティ上の脆弱性が生じる可能性があります。
例えば外部サイトが汚染されている場合、外部サイト管理者も気づいていない悪意のあるJavaScript等を読み込んでしまう可能性があります。
そのため、外部サイトのコンテンツを読み込む設定をしている場合は、その外部サイトのセキュリティレベルを定期的にチェックする必要があります。
外部サイトのセキュリティチェックには、「Qualys SSL LABS SSL Server TestでのSSLサイト評価」がおすすめです。具体的な利用方法は、サポートページを参照してください。