トップ «前の日記(2006-11-07) 最新 次の日記(2006-11-14)» 編集

"週"記

日記?ムリっ。
半年1回の更新を目指すよう心がけます。
RSS

WebAppSec

2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|03|04|05|06|07|08|09|12|
2008|01|02|
2009|04|
2010|02|

履歴


2006-11-08

_ [webappsec] ぇーーーーーーーーーっ!!!JavascriptでXSS対策?!

まっちゃさんのところのコメントに反応してみる。

# ikepyon 『確かに、ブラウザ側だけで処理行ってる場合はこの対策でもいいですね。というかそれしか方法ないし。 しかし、そんなケースはあまりないでしょうけど・・・』

とある記事の関連で調べてたんですが、あまりないわけでもなさそうです。古典的なのは、document.write に入力値をそのままつっこんじゃうタイプですね。

document.write(document.referrer);

こういう作りをしていると、

http://www.example.com/?<script/src="http://www.example.com/evil.js"></script>

みたいなページからリンク張られて、終了。
最近は AJAX が流行らしいので、もっと複雑になってると思いますが、同じような漏れがきっとあるんでしょう。こういうのはJavascriptでXSS対策してくださいね。

// Javascript には HTML エスケープする関数は用意されてないのか?
String.prototype.htmlescape = function(){
 return this.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
document.write(document.referrer.htmlescape());
本日のツッコミ(全7件) [ツッコミを入れる]
_ yamagata21 (2006-11-08 23:04)

\x3cscript\x3e とか大丈夫なんでしたっけー?

_ ikepyon (2006-11-08 23:19)

なるほど、結構あるんですね。最近だとAJAX関連で多そうだし

_ 金床 (2006-11-09 01:30)

ブラウザに表示するとエスケープ関数の中身がヘンに見える件について

_ 金床 (2006-11-09 01:33)

http://www.jumperz.net/fuga/jsescape.gif<br>こんな感じです

_ bun (2006-11-09 09:47)

エスケープ漏れしてたので直しました。orz

_ はせがわ (2006-11-09 10:15)

そういう場合、DOM経由で書き換えるのがよいように思うのですけど、どうなんでしょ?

_ bun (2006-11-09 10:29)

やってみたら、\x3cscript\x3eは大丈夫そうでした。<br>DOMだと、innerText使えば大丈夫ですけど、innerHTML使うとエスケープしないとだめですね。innerTextってどのブラウザでも対応してたんでしたっけ?

お名前:
E-mail:
コメント:

投稿する前にチェックボックスをチェックしてください


無料アクセス解析