Timmy Willison氏は最近、jQueryの新しいバージョンをリリースした。jQuery 3.5は、jQueryのHTMLパーサーに見られたクロスサイトスクリプティング(XSS)の脆弱性を修正している。Snykオープンソースセキュリティプラットフォームは、すべてのWebサイトの84%がjQuery XSSの脆弱性の影響を受ける可能性があると推定している。jQuery 3.5では、次のメジャーjQueryリリース(jQuery 4)でポジションセレクターが完全に削除される準備として、ポジションセレクターの:even
および:odd
に欠落しているメソッドも追加される。
Masato Kinugawa氏は、jQueryのhtmlPrefilter
メソッドにクロスサイトスクリプティング(XSS)の脆弱性を発見し、チャレンジ形式のポップアップアラートウィンドウを示す例を公開した。Kinugawa氏は、jQueryのhtml()
関数がhtmlPrefilter()メソッドを呼び出しており、それは正規表現を使用してXHTMLのようなタグをHTMLで機能するバージョンに置き換えると説明している。
これは基本的に、自己終了タグをフルブラウンタグに変換します。
<blah/>
<!-- converted to -->
<blah></blah>
これは本当に強力です。
<style><style/>Elon
;を考えてみましょう。innerHTML
を使用してこれをDOMに挿入すると、結果のDOMツリーは次のようになります。
<style>
<style/>Elon
</style>
しかし、jqueryの
html()
では、まったく別の話になります。html()
で同じ入力を試みると、次のようになります。
<style>
<style>
</style>
Elon
自己終了の
<style/>
は<style></style>
に置き換えられ、2番目の<style>
タグが最初の<style>
タグのコンテンツとして扱われるようになりますが、Elon
テキストに何が起こったかを確認してみましょう。<style>
タグの外側にあり、HTMLコンテキストで開いています。ゆえに、XSSです。
#セキュリティ #jquery #javascript #デベロップメント #ニュース