検索
連載

[ニッチ]E4Xで攻撃できる? できない?教科書に載らないWebアプリケーションセキュリティ(6)(2/3 ページ)

XSSにCSRFにSQLインジェクションにディレクトリトラバーサル……Webアプリケーションのプログラマが知っておくべき脆弱性はいっぱいあります。そこで本連載では、そのようなメジャーなもの“以外”も掘り下げていきます (編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

E4Xによるのぞき見を防止するFirefoxの改善

 Firefox 3.0ではわなの仕掛けられたサイト上で、<script src="http://example.jp/sns.html"></script>のように、外部サイトのコンテンツを読み込んだ場合、target.html内にXML処理命令<?xml ...>や文書型宣言<!DOCTYPE ...>が含まれていない場合には、E4Xの機能によりJavaScriptソースとして扱われていました。

 ところが、Firefox 3.5および3.6では、sns.htmlのコンテンツがXMLリテラルのみで構成されている場合はエラーとなり、E4Xとして扱うことができなくなっています。

 例えば、sns.html の内容が前述のように

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

の場合、JavaScriptとしてみた場合はXMLリテラルしか存在しませんので、以下のエラーが発生します。

図1 Firefox 3.6でのエラー
図1 Firefox 3.6でのエラー(クリックで拡大します)

 target.html の内容が

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

の場合は、JavaScriptとしてみた場合はXMLリテラルだけでないため、Firefox 3.5および3.6でもHTMLをJavaScriptとして解釈し、関数theftが呼び出されるため、JavaScriptからHTML内の文字列にアクセスすることができます。

図2 Firefox 3.6ではHTML内の文字列をJavaScriptとして解釈する
図2 Firefox 3.6ではHTML内の文字列をJavaScriptとして解釈する

 このようにFirefox 3.5以降では、<script>のsrcとして読み込む対象が一般的なHTMLおよびXMLであった場合にはJavaScriptとして解釈されないように変更されている一方で、XMLリテラル以外の文を含む通常のJavaScriptファイルはこれまでどおり解釈されるため、E4Xを利用した外部コンテンツののぞき見という攻撃に対して、大きな副作用なしに高い効果を上げる対策が取られたと考えてよいと思います。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る