2008年2月28日木曜日

iboxの XSS脆弱性とその対策

Lightbox的なJavaScriptライブラリの中でも軽さと機能性が使いやすいibox
リンクにtitle属性をセットしておくと、開いたiboxのフッターにそのタイトルを表示してくれるが、このときにhtmlエスケープが解除されてしまう。
title="<b>foo</b>"

表示されるタイトル=<b>foo</b>

用途によっては使いやすいのだろうが、タイトルには入力データを表示することが多いのでXSSの危険性がある。


対策:
ibox.jsの127行目あたりを下記のように変更する。
このタイトルは属性として使われるわけではないので、クォーテーションのエスケープは要らない。
if(title != "") {ibox_footer.innerHTML = title;} else {ibox_footer.innerHTML = "&nbsp;";}

if(title != "") {ibox_footer.innerHTML = title.replace(/</g, "&lt;").replace(/>/g, "&gt;");} else {ibox_footer.innerHTML = "&nbsp;";}

0 件のコメント:

コメントを投稿