My Photo

« クロスサイト・スクリプティング(XSS)その3 | Main | WindowsのPHPにSmarty3をインストール »

September 19, 2013

クロスサイト・スクリプティング(XSS)その4

DOM based XSS

DOM based XSSはJavaScriptによるクライアント側での表示処理に存在するXSS脆弱性である。サーバ側で生成されたHTMLには攻撃者の注入したJavaScriptが現れないのでこのように呼ばれる。

次のスクリプトはクエリストリングname=に指定した値をJavaScriptにより表示する。

こんにちは
<script type="text/javascript">
document.URL.match(/name=([^&]*)/);
document.write(unescape(RegExp.$1));
</script>
さん

「name=<script>alert(document.cookie)</script>」
というクエリストリングを指定してスクリプトを実行すると、JavaScriptが実行されてしまう。

対策としては、JavaScriptの標準関数にはHTMLエスケープの機能は用意されていないので、jQueryを使用して文字列を表示する方法が考えられる。
text()は引数をエスケープして要素内にセットする。

こんにちは<span id="name"></span>さん
<script tyep="text/javascript">
if (document.URL.match(/name\=([^&]*)/)) {
	var name = unescape(RegExp.$1);
	$('#name').text(name);
}
</script>

HTMLタグやCSSの入力を許す場合の処理

SNSなどでHTMLタグやCSSの入力を許可したい場合、script要素やイベントハンドラによって悪意のあるJavaScriptが注入される可能性がある。
対策として入力されたHTMLを構文解析して表示してよい要素のみを抽出する方法がある。HTMLを構文解析するライブラリを使用することが望ましい。PHPで利用できるライブラリにはHTML Purifierなどがある。

参考文献:体系的に学ぶWebアプリケーションの作り方 4.3.2 クロスサイトスクリプティング(発展編)

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
徳丸 浩

ソフトバンククリエイティブ 2011-03-03
売り上げランキング : 4070

Amazonで詳しく見る
by G-Tools

« クロスサイト・スクリプティング(XSS)その3 | Main | WindowsのPHPにSmarty3をインストール »

JavaScript」カテゴリの記事

セキュリティ」カテゴリの記事

プログラミング、技術情報」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/58222061

Listed below are links to weblogs that reference クロスサイト・スクリプティング(XSS)その4:

« クロスサイト・スクリプティング(XSS)その3 | Main | WindowsのPHPにSmarty3をインストール »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof