Mixed Content Scan を使って混合コンテンツを見つけ出す

HTTPS photo
Photo by Sean MacEntee

WebサイトをHTTPSで表示する際、表示されたWebページ内にhttpリンクが含まれていると、ブラウザが混合コンテンツ / Mixed Contentsの警告を表示します。この警告を消す基本的な対処としては、httpリンクを全て修正する(相対リンクにする、httpsに書き換える等)ことになると思いますが、すべてのページを表示させてエラーを探し、修正するのは大変な作業です。そこで、Webサイト内に混合コンテンツが含まれているかどうかをスキャンして見つけ出してくれる、Mixed Content Scanを試してみました。

以下は仮想環境にUbuntu 18.04 LTS Live Server Versionを用意し、Mixed Content Scanをインストールした際の記録です。Ubuntu 18.04の準備までは割愛します。

PHP関連のインストール

$ sudo apt install php php-curl php-xml

composerをインストール

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

composerを使ってMixed Content Scanをインストール

$ composer global require bramus/mixed-content-scan:~2.8

インストール先に移動して実行

$ cd .config/composer/vendor/bin
$ mixed-content-scan https://スキャンするサイトのホームページ >> scanlog.txt

実行後、保存されたログファイル(上記ではscanlog.txt)を確認すると、

[2018-04-27 11:35:28] MCS.INFO: 00034 - https://・・・
[2018-04-27 11:35:28] MCS.ERROR: 00035 - https://・・・
[2018-04-27 11:35:28] MCS.WARNING: http://・・・

というような形式で、httpリンクが含まれない場合にはMCS.INFOが、ある場合にはMCS.ERRORが記録され、その下に具体的なhttpリンクが記録されます。

なお、このソフトウェアの制限として、リンクされて読み込まれたCSSファイルやJSファイル内は走査しないので、リンク先の.cssや.jsにhttpリンクが含まれていても検知できません。