コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Mixed contents の問題点と考え方をざっくりまとめる

Mixed Contentsが指すものは何で、何が問題なのか。

MixedContents(混在コンテンツ)とは

MDNの説明が的確なので引用すると以下

ユーザが HTTPS を通じてページにアクセスすると、ユーザとウェブサーバとの接続は TLS で暗号化され、盗聴や中間者攻撃から保護されます。HTTPS のページの中に通常の平文の HTTP で送られてくるコンテンツが含まれている場合、混在コンテンツと呼ばれます。このようなページは部分的にしか暗号化されておらず、盗聴者や中間者攻撃者が暗号化されていないコンテンツにアクセスできてしまいます。つまり、ページは安全ではありません。 -混在コンテンツ - ウェブセキュリティ | MDN

例えば、ページそのものがhttpsでやり取りされているが、その中のimgタグやsrcタグなどで指定されているURLがhttpであったりする場合がこれにあたる。

何が問題なのか

混合することによって誤認される

ひとつのページ内にhttpとhttpsが混在すると、ページ上はhttpsで通信しているため秘匿されていると思いきや、個々の要素の取得がhttpで通信していることでその通信で秘匿情報(ブラウザが通信時に等しくheaderに入れるような情報やcookieなど)が漏れ出してしまう危険があるため、「パッと見としては安心できそうだが実は安全ではない」という状態が作られてしまう。

そのため、各ブラウザはこの混在する状態が発生しないように対応をしており、それが副次的な問題となる。

目に見える問題としてのブラウザのブロック

各ブラウザ(Chrome,Firefox,Edge,Safari)はMixed Contentsとなる状態を現状許容をしていない。

そのためhttpsのページ内にhttpで記述されたものがあればそのコンテンツは取得できない、もしくは処理ができない状態となる。このため利用するユーザからすると一部の情報が見えない歯抜けの状態となり、コンテンツ提供として問題が発生する。

この状況を回避するためにやるべきこと

Mixed contentsは何度も記載したとおり、httpsのページにhttpに内容をソースとする記述があることが問題なので、ちゃんとページ内で利用するリソースに関してはちゃんとhttpsで統一することで回避できる。

参考リンク