【Windows/IE】KB3154070(MS16-051)を適用したInternet Explorerにて、iframeの挙動がおかしくなる。
2016年5月10日に出された「Windows 7 用 Internet Explorer 11 の累積的なセキュリティ更新プログラム (KB3154070)」にて、iframeの挙動がおかしくなる事象があるので紹介します。
なお、Windows 10の「Windows 10 Version 1511 および Windows Server 2016 Technical Preview 4 用の累積的な更新プログラム (2016 年 5 月 10 日) (KB3156421)」でも同一事象が発生している模様です。
<パッチ>
Windows 10 Version 1511 および Windows Server 2016 Technical Preview 4 用の累積的な更新プログラム (2016 年 5 月 10 日)
<セキュリティ情報>
マイクロソフト セキュリティ情報 MS16-051 - 緊急
Internet Explorer 用の累積的なセキュリティ更新プログラム (3155533)
[解決策]
<解決策に関してのコミュニティサイト(英語)>
【Stack Overflow の翻訳】
<事象と原因>
KB3154070 がインストールされた状態でのIEでは、「ページのローディング完了まで(親ノードのDOMツリーの準備ができる前)に、iframeが任意のスクリプトの動作を開始する場合、コンテンツをブロックする」ようIEが動作する。
ただし、調査の中でiframeにリソースのないコンテンツがロードされた場合、ブロックがされないことわかりました。
<回避策>
回避策として「iframeにてsrc属性を宣言しない」手法が挙げれます。
今回のパッチではDOMツリー操作に関するブロックは行われていないので、onloadハンドラでsrc属性を宣言することで回避できます。
■回避方法サンプル
・iframeの定義
<iframe id="myIFrame"></iframe>
・イベントハンドラの定義
(bodyタグの末尾にonloadイベント宣言、もしくはondomreadyイベントにて)
document.getElementById('myIFrame').src = '/whatever/url/to/load';
<根本原因>
KB3154070に関する、この情報は、セキュリティ対策か、不具合かの報告は上がっておらず、判断ができない状況にある。
なお、ロゴスコンピュータ様のパッケージでも不具合があった模様です。