关于您项目中的 npm 依赖项的社区通知

发布于 作者

正如你们大多数人可能已经知道的那样,最近在使用 npm 模块时,突出显示了一个潜在的危险安全漏洞。总的来说,jQuery Foundation 仍然认为这是一种安全且功能强大的做法,并且我们绝不会说您不应该再在您的 JavaScript 项目中使用 npm 进行包管理。我们希望倡导的是对 jQuery Foundation 中插件开发者和使用许多在 npm 上分发包的项目社区的谨慎态度,在安装包及其依赖项时。

快速回顾

与其重写故事,不如查看 npm 博客上的完整回顾和总结。

关注点

接下来发生的事情就是我们写这篇文章的原因。Azer Koçulu 在 npm 上发布了一系列包,其中一个就是 left-pad 包,这是一个简单的代码片段,被许多其他包所依赖。在包被取消发布后,许多流行的项目开始出现构建失败,因为缺少了这个包。这本身就令人担忧,任何人都可以取消发布你所依赖的包,或者你依赖项的依赖项的依赖项,从而给你或你的团队带来真正的麻烦。在 left-pad 被取消发布后不久,npm 团队决定将其重新发布,并指定了新的所有者,以修复互联网上许多出现故障的构建。更令人担忧的是,一旦一个包被取消发布,任何人都可以获取你在依赖树中依赖的那些包名,并将新的、潜在的恶意代码推送到你的项目中。通常情况下,这问题不大,因为你的包可能依赖于被取消发布的版本,而新发布的版本不会被拉取。然而,许多人在安装依赖项时会使用命令 npm i --save <package-name>npm i --save-dev <package-name>,默认情况下会安装当时发布的最新版本,前面带有一个 ^,例如 ^1.0.0,这告诉 npm 在下次更新依赖项时安装任何通过次要版本更新的版本。这意味着,如果你重新安装或更新你的项目,并且有人将恶意代码推送到我们示例中的补丁版本 (1.0.1) 或次要版本 (1.1.0) 中,它将自动安装到你的项目中。

建议

我们的主要建议是小心谨慎。了解你正在安装的内容,以及你的依赖项及其依赖项正在安装的内容。你现在应该检查你的项目,看看你依赖的任何模块是否已被取消发布,以及是否有任何模块在 此列表 上,并且最近发布了你可能希望避免的新版本,直到你确认它是安全的。虽然我们没有直接与他们交谈,但我们相信 npm, inc. 的团队正在努力寻找解决这些问题的方法,但在那之前,请保持警惕,并确保你的项目和插件安全。我们一直相信,并且继续相信,JavaScript 已经并将继续是开发从个人博客到企业级应用程序的最强大的选项之一。任何技术都会在发展过程中遇到一些问题,但只要我们从中学习,并在继续前进的过程中保留这些知识,JavaScript 就会取得成功。

jQuery 1.12.2 和 2.2.2 发布

发布于 作者

我们继续发布新版本,为 1.x 和 2.x 分支发布了两个新的补丁版本。这些版本包含一些错误修复,其中包括 jQuery.isPlainObject 的两个边缘情况错误,以及在 IE 11 中使用 .prop() 方法设置 option 元素 selected 属性时的一个错误。

我们不期望此版本有任何破坏性更改,但如果您在从以前的版本升级时遇到错误,请 告诉我们

我们很快就会有一个 jQuery 3.0 的发布候选版本。

完整的变更日志

2.2.2GitHub changelog

1.12.2GitHub changelog

下载

您可以直接从 jQuery CDN 包含这些文件,或将它们复制到您自己的本地服务器。 1.x 分支包括对 IE 6/7/8 的支持,而 2.x 分支则不包括。

https://code.jqueryjs.cn/jquery-1.12.2.js
https://code.jqueryjs.cn/jquery-1.12.2.min.js

https://code.jqueryjs.cn/jquery-2.2.2.js
https://code.jqueryjs.cn/jquery-2.2.2.min.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。公共 CDN 今天会收到其副本,请给它们几天时间来发布文件。如果您急于开始,请使用我们 CDN 上的文件,直到它们有机会更新为止。

非常感谢所有参与此版本发布的人员,包括测试、报告错误或提交补丁的人员,包括 Michał GołębiowskiRichard Gibson 和整个 jQuery 团队。