关于项目中 npm 依赖项的社区公告

发布时间: 作者:

如大多数人所知,最近在项目中使用 npm 模块时发现了一个潜在的危险安全漏洞。总的来说,jQuery 基金会仍然认为这是一种安全且非常强大的做法,我们绝不是说您应该不再在您的 JavaScript 项目中使用 npm 进行包管理。我们想向 jQuery 插件开发人员和基金会中众多在 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 变更日志

1.12.2GitHub 变更日志

下载

您可以直接从 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://jqueryjs.cn/download/。公共 CDN 将在今天收到它们的副本,请给他们几天时间来发布这些文件。如果您迫不及待地想要快速上手,请使用我们 CDN 上的文件,直到它们有机会更新。

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