jQuery 3.5.1 发布:修复回归
我从未在 jQuery 版本发布中说过这句话,但愿原力与你同在!不久前,在一个与这个完全一样的星系中,我们发布了 jQuery 3.5.0。我们为该版本中的一个回归提供了一个快速修复。
具体来说,我们已经将我们的内部数据对象更改为使用Object.create( null )
而不是普通对象({}
)。我们这样做是为了防止与Object.prototype
属性上的键发生冲突。但是,这也意味着用户(尤其是插件)无法再使用本机.hasOwnProperty()
方法检查 jQuery 数据中包含的内容,并且它破坏了一些代码。我们已撤消了该更改,但计划将其放回 jQuery 4.0 中。此更改是此版本中唯一的代码更改。其他更改包括对我们的文档和构建系统的一些小幅更新。
3.5.0 中的安全修复
jQuery 3.5.0 包含了针对 jQuery DOM 操作方法中的两个安全问题的修复,例如.html()
、.append()
和其他方法。这两个问题的安全建议已在 GitHub 上发布。虽然我们在jQuery 3.5.0 博客文章中提供了第一个问题的全部细节,但我们没有提供第二个问题的全部细节,并且想在这篇文章中介绍。
第二个问题与第一个非常相似。这是一个 XSS 漏洞,与将<option>
元素传递给 jQuery 的 DOM 操作方法有关。本质上,我们正在使用正则表达式将<option>
元素用<select>
元素包装,以确保这些元素在旧 IE(IE <= 9 将任何<option>
标签替换为它们的内容,当插入到<select>
元素之外时)。
我们的修复是在需要的地方应用此代码。幸运的是,由于 IE9 中的解析行为不同,我们可以在 IE9 中保留此修复,而不会将其暴露于与其他浏览器相同的漏洞。请在您有机会时升级,以避免这些漏洞。
升级
如果您尚未升级到 jQuery 3.5,请查看3.5 升级指南。如果您尚未升级到 jQuery 3+,请先查看3.0 升级指南。此外,jQuery Migrate 插件将帮助您识别代码中的兼容性问题。
如果您还无法升级到 3.5+,Daniel Ruf 友情提供了先前 jQuery 版本的补丁。请尝试这个新版本,并告知我们您遇到的任何问题。
下载
您可以从 jQuery CDN 获取文件,或直接链接到它们
https://code.jqueryjs.cn/jquery-3.5.1.js
https://code.jqueryjs.cn/jquery-3.5.1.min.js
您也可以从 npm 获取此版本
npm install jquery@3.5.1
精简版本
有时您不需要 ajax,或者您更喜欢使用专注于 ajax 请求的众多独立库之一。而且,通常使用 CSS 和类操作的组合进行网页动画更简单。除了包含 ajax 和效果模块的 jQuery 正式版本外,我们还发布了一个“精简”版本,它排除了这些模块。如今,jQuery 的大小很少是加载性能问题,但精简版本比正式版本压缩后小约 6k 字节。这些文件也可以在 npm 包和 CDN 中找到
https://code.jqueryjs.cn/jquery-3.5.1.slim.js
https://code.jqueryjs.cn/jquery-3.5.1.slim.min.js
这些更新已作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方法的信息,请访问https://jqueryjs.cn/download/。公共 CDN 今天收到他们的副本,请给他们几天时间发布文件。如果您急于快速开始,请使用我们 CDN 上的文件,直到他们有机会更新。
感谢
感谢所有参与此版本发布的人,他们通过提交补丁、报告错误或测试,包括Pierre Grimaud、Michal Golebiowski-Owczarek、Ed S、vanillajonathan和整个 jQuery 团队。
变更日志
完整变更日志:3.5.1
构建
- 在 Node.js 14 上测试,停止在 Node.js 8 和 13 上测试 (205dd134)
- 在 ESLint 中启用 reportUnusedDisableDirectives (b21d6710)
- 将 3.x-stable 版本更新到 3.5.1-pre。 (898784ab)
您是否为这两个安全问题获取了 CVE ID?
感谢您的一切以及您的详细发布说明,它们非常有用。我也非常喜欢您列出安全修复的地方。我被您的星球大战引用逗乐了。再次感谢,我会让我的团队使用 3.5.1。
清理新事件测试中的
window
和document
处理程序 (c1c0598d)终于。感谢您修复了这个问题。