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 3.5の修正により、jQuery.htmlPrefilterが恒等写像になり、以前の動作に依存するコードが破損する可能性がある。jQueryチームは、jQueryマイグレーションプラグインを使用して以前の動作に戻すことを勧めている。
以前の動作が絶対に必要な場合は、jQuery移行プラグインの最新バージョンを使用すると、古い
jQuery.htmlPrefilterを復元する機能が提供されます。プラグインを組み込んだ後、jQuery.UNSAFE_restoreLegacyHtmlPrefilter()を呼び出すことができ、jQueryはXHTML準拠の終了タグを再び保証するようになります。
jQueryは成熟したライブラリだが、その存在はWebサイトにも広く普及している。Snykオープンソースセキュリティプラットフォームは、JavaScriptフレームワークセキュリティの状況レポート2019で、すべてのWebサイトの84%がjQueryXSSの脆弱性の影響を受ける可能性があると推定している。jQueryは、Alexaの上位5,000のURLの79%に存在している。
メンテナンスと最適化の理由から、すべてのポジションセレクター(:firstや:lastなど)はjQuery4で削除される。:evenと:oddを除いて、ほとんどのポジションセレクターには代替方法がある。jQuery 3.5では、不足しているメソッドを追加する。$("div:even");は、たとえば、$("div").even();と書くことができる。
jQuery 3.5では、JavaScript独自のString.prototype.trim()を優先して、jQuery.trimを非推奨としている。jQuery 3.5には、追加のバグ修正、非推奨、変更があり、その詳細はリリースノートに記載されている(すべての詳細な変更ログを含む)。アップグレードを希望する開発者は、以前にjQuery 3にアップグレードしたことがない場合、3.5アップグレードガイドまたは3.0 Upgrade Guideを参照してください。すべての場合に、jQuery Migrateプラグインは、開発者がコードの互換性問題を特定することをサポートする。
jQuery 3.5.0は、CDNとnpmの両方から入手できる(npm install jquery@3.5.0)。