JavaScript

Q4

何が表示されますか?(IE9以降) <script> window.onerror = function(e) { alert(arguments.callee.caller); }; var a,b,c; delete d; </script> <script> a,b c,d </script>

クイズの続き

Q3:何が表示されますか?(IE9以降) <script> window.onerror = function(e) { alert(arguments.callee.caller); }; function a(){} function b(){} function c(){} delete d; </script> <script> a(),b() c(),d() </script>

クイズの答え

http://d.hatena.ne.jp/masa141421356/20150907/1441639190Q1回答 Q2回答

クイズ

IE(9以降)でalertされるのはどの範囲?(2015/09/18追加:スマートフォン版では正しく表示されないのでPC版かモバイル版を見てください)Q1: <script> window.onerror = function(e) { alert(arguments.callee.caller); }; var a; function aa() { a();/* comment 1a</script>…

HTMLラッパー関数のXSS

JavaScriptのStringオブジェクトのHTMLラッパーメソッドの中には、引数の値をhtmlのタグの属性値として出力するものがあります。 anchor(name) fontcolor(color) fontsize(size) link(href) 多くのブラウザで、これらのメソッドは属性値を何のエスケープもせ…

無限に増殖するJavaScript

自分が新しいブラウザを入手すると必ず試す事の1つに 自己増殖しながら無限に document.write() をするスクリプトを使った メモリ不足時の動作のテストがあります。 (ループではないのが意地の悪い所)docomo の携帯の JavaScript ってこういう意地悪なス…

jsstr.cpp 内の Utf8ToOneUcs4Char における、冗長な UTF-8 シーケンスの検出処理の問題(bug 511859)

8月終わり頃から取り組んでいたバグの修正と仕様の変更がTrunkにチェックインされました。 実際には、 JavaScriptのdecodeURI(),decodeURIComponent()が%エンコードされた冗長なUTF-8に対して U+FFFD を返すのではなくURIErrorを投げるようにする(bug51476…

Shift_JISの動的に生成されたJavaScriptをUTF-8として解釈した場合に発生する問題

縺ソ" (Shift_JIS) → E3 81 83 5C 22 → ぃ\" (UTF-8)ということで、Shift_JISの2バイト目の5Cを単独の文字として解釈してしまうので、文字列の終端位置を誤認させることが可能です。 昔からよくあるShift_JISの2バイト目の 5Cの問題と同じことですけど。

プラス記号を使わない文字列連結

プラス記号を使わずに文字列を結合する こういう手もありますね。Webブラウザ上で実行していない場合は使用できないかもしれないけど。 decodeURIComponent( encodeURIComponent(strB).link(encodeURIComponent(strA)) .replace("<a href=\"","").replace("<A HREF=\"","") .replace("\">","").replace("<\/A>","").</a>…