Mixed contentとは?
Mixed contentとは、SSL化されたhttpsページ内にhttp(非暗号化通信)で読み込んでいるファイルが存在(混在)している状態を指します。何故この状態が問題なのか?というと、ブラウザ側で「安全ではない」と判断されて読み込みがブロックされてしまうファイルもあれば、「安全ではない」と判断されつつも読み込まれるファイルもあるため、最終的にサイトのデザインが崩れた状態で表示されたり、”クリックしても反応しない”など機能上の不具合がある状態で表示されたりする可能性があるからです。
具体的には、iframeやスクリプトファイル(CSS・JavaScript・XMLなど)は読み込みがブロックされ、画像や動画ファイルはブロックされません。こちらについては、当コラムの『SSL設定時に表示されるエラーや警告の原因を徹底解明!~コンテンツエラー編~』にて解説していますので、興味のある方はぜひご覧ください。
なお、過去のChromeブラウザではMixed contentがあった場合、アドレスバーに黄色い三角マークが表示されたり、鍵マークをクリックした際にメッセージが表示されたりと何度か表示仕様の変更を経ています。現在(Chrome 77)ではアドレスバーに「i」マークが表示され、クリックすると「このサイトへの接続は完全に保護されていません」というメッセージが表示されます。
Mixed contentの段階的なブロック強化とは?
前述のとおり、これまではiframeやスクリプトファイルがブロックされ、画像や動画ファイルは読み込まれていましたが、この仕様が段階的に変更されます。
まず、2019年12月にリリース予定のChrome 79より、ブロックを解除する設定※ができるようになります。これまで一律でiframeやスクリプトファイルの読み込みはブロックされていましたが、サイト毎にブロックを解除して閲覧することが可能になります。この変更自体に大きな影響はありませんが、よく使うサイトにMixed contentがある場合、今までは閲覧することをあきらめたり、別のブラウザを試してみたりといった対応が必要でしたが、エンドユーザーが自ら設定すればブロックを解除して閲覧することができるようになります。
- ※「i」マーク⇒「サイトの設定」の順にクリックして設定画面を開き、ブロック/解除を設定。
次に2020年1月にリリース予定のChrome 80より、これまでhttpでも読み込まれていた動画や音声ファイルへのリンクが、強制的にhttpsで読み込まれるようになります。つまり、ブラウザ側で勝手にリンクが書き換えられるのです。リンク先がhttps接続できずにエラーになると、動画や音声ファイルの読み込みはブロックされます。また、画像ファイルについてはhttpでも読み込まれますが、アドレスバーに「保護されていない通信」と表示されるようになります。
最後に2020年2月にリリース予定のChrome 81では、動画や音声ファイルと同様に画像ファイルも強制的にhttpsで読み込まれるようになり、https接続できない場合は読み込みがブロックされます。段階的にとはいえ、3ヶ月程度の短期間で大きく仕様が変更されるため、サイト運営者の方は注意が必要です。
Mixed contentの回避方法とは?
Mixed contentを回避するためにサイト制作者、運営者が行うべき事はとても簡単で、httpでリンクされているソースを読み込まないこと、設定されている場合はhttpsに修正することです。画像ファイルなどのリンクがhttpになっている場合は手動で書き換えが必要です。WordPressを利用している場合はデータベースを置換するプラグインなどでリンクを修正するのがよいでしょう。
外部ソースでよく使われるjQuery、Font Awesome、Google Analytics、Amazonアソシエイトなどのスクリプトファイルは近年提供者側のSSL化が完了しており、多くの場合そのままhttpsで読み込めることが多いです。特に古くから運営されているサイトはこういった外部ソースファイルがhttpのままになっている場合が多いので、一度設定を確認しておきましょう。
まとめ
「これまで画像ファイルは読み込まれていたのになぜブロックするの?」と思われる方も多いかと思いますが、Googleのブログでは、httpで読み込まれる株価チャートの画像ファイルを悪意のある第三者が改ざんすることにより、投資家がミスリードしてしまう危険性を例に挙げています。確かにHTMLソースを改ざんできなくても「画像を改ざんして悪いことをする」という試みは不可能ではありません。スクリプトファイルやiframeのように直接的に悪意を持ったファイルを挿入する危険性とは異なりますが、どちらもエンドユーザーに悪影響を及ぼすという点は変わりません。今回の変更はそのような危険性に対処するために実施されるということですね。
これまではサイトのSSL化(https化)が重視されてきました。しかしながら、httpで読み込まれる画像については目に見える場所で警告が出ないことから、必要性が感じられずに対応してこなかったサイトも多いと思われます。この機会にChromeのデベロッパーツールなどでサイトを見直してhttpで読み込んでいる画像がないか、Mixed contentが発生していないかを確認してみましょう。