私の静的コードアナライザーは、クライアントのWebサイトにあるこのJavaScriptに、DOMベースのXSSの可能性があるとしてフラグを立てます。
_var x = $('#' + window.location.hash.substr(1))
x.addClass('highlighted').find('div').show();
_
コードは直接$(function(){ ... }
にあるため、ページが読み込まれるたびに実行する必要がありますか? (告白:私はjQueryについてあまり知らない...)
グーグル、2011年のこの記事の後、jQueryがこのようなコードの利用をより困難にすることがわかりました。
http://blog.mindedsecurity.com/2011/07/jquery-is-sink.html
しかし、攻撃は依然として可能であり、依然として機能するものは http://www.mjcblog.net/2011/06/jquery-selector-injection/ です。
クライアントはまだ脆弱ですか?私はそう思いますが、実際に何が起こっているのかを知るのに十分なほどjQueryを知らないので、私はエクスプロイトを思い付くことができません。
編集する -$()
に渡される値は常に_#
_で始まるので、これがこれの悪用をブロックし、FirefoxとChromeコンソールがこれを確認するために-しかし、私はまだ別の方法がないことを確信していません:)
クライアントが脆弱かどうかは、jQueryのバージョンと、jQuery migrateをロードしているかどうかによって異なります。私はしばらく前にこのテストサイトを構築し、これらの2つのバグに対して異なるバージョンのjQueryをテストしました。 http://research.insecurelabs.org/jquery/test/
Retire.js(私が管理している無料のオープンソースツール)は、そのサイトにあるjQueryのバージョンが脆弱かどうかを通知します。 http://retirejs.github.io/retire.js/ = chrome Retire.jsのバージョンをお勧めします。