XSS対策:jQueryでのエスケープ

例えば以下のようにjavaScript上でhtml要素を出力するような処理がある場合、クロスサイトスクリプティング対策としてvalueの内容をエスケープ処理する必要があります。
$(“test”).html(value);

ただJQueryの関数などで直接行う方法が無いようです。
したがって、「$.text() 関数を使うとブラウザが勝手にエスケープ処理を行ってくれる」という処理を利用します。




こんな関数を作ります。(ダミー領域のtextにパラメータを一度セットし、そのhtml要素を返す。)
var escapeHTML = function(val) {
&nbsp&nbsp&nbsp&nbsp&nbsp&nbspreturn $(‘<div />’).text(val).html();
};

こうやって使用します。
value = escapeHTML(value);
valueの内容に<script>xxx</script>等のjavaScript文字列が含まれていた場合もエスケープ処理が施されます。
賢いですね~。

以下を参考にさせていただきました。
hiromitz @ blog for designing and development
Jimdoやデザイン、jQuery等のプログラミングなどをご紹介
text(val) - jQuery 日本語リファレンス


 
Web開発
NRBMをフォローする
年中暁を覚えず・・・・

コメント

タイトルとURLをコピーしました