是否有用于 npm 审核的纱线替代方案



需要纱线的固定分辨率特征,但也想用npm audit进行审核?有没有替代npm audit的纱线?或者,或者,固定依赖项的依赖项的解析是否适用于npm

Yarn 没有npm audit fix.

但这里是通过使用npm来做到这一点的方法 - 暂时。

  1. 在不安装节点模块的情况下生成package-lock.json文件
npm i --package-lock-only
  1. >修复软件包并更新package-lock.json文件
npm audit fix
  1. 删除yarn.lock文件并将package-lock.json文件转换为yarn.lock
rm yarn.lock
yarn import
  1. 删除package-lock.json文件
rm package-lock.json

例如:

yarn audit
38363 vulnerabilities found - Packages audited: 908342
Severity: 38352 Low | 11 Moderate

(我知道。react-scripts疯了...

npm audit
npm ERR! code EAUDITNOLOCK
npm ERR! audit Neither npm-shrinkwrap.json nor package-lock.json found: Cannot audit a project without a lockfile
npm ERR! audit Try creating one first with: npm i --package-lock-only
npm i --package-lock-only
...
added 266 packages, removed 354 packages, updated 1653 packages, moved 1 package and audited 913793 packages in 54.304s
found 495 low severity vulnerabilities
run `npm audit fix` to fix them, or `npm audit` for details
npm audit fix
...
added 267 packages from 152 contributors, removed 355 packages and updated 1712 packages in 92.849s
50 packages are looking for funding
run `npm fund` for details
fixed 211 of 495 vulnerabilities in 913793 scanned packages
284 vulnerabilities required manual review and could not be updated
git status -s
?? package-lock.json
yarn import
yarn import v1.21.1
info found npm package-lock.json, converting to yarn.lock
...
success Saved lockfile.
✨  Done in 25.61s
rm package-lock.json

yarn audit/yarn install --audit自 yarn@1.12.0 起可用

https://github.com/yarnpkg/yarn/releases/tag/v1.12.0

不幸的是,还没有--fix选项,但作为解决方法,您可以使用 https://www.npmjs.com/package/yarn-audit-fix

是的,您可以使用yarn audit来审核漏洞,但不能像在npm audit fix中那样使用yarn audit fix来修复漏洞。

要修复文件中yarn.lock漏洞,您必须使用yarn add package_name将软件包(带有漏洞)重新安装到较新版本

您可以在此处阅读问题=> https://github.com/yarnpkg/yarn/issues/7075

我认为它还没有准备好纱线。您可以参考以下问题。 https://github.com/yarnpkg/yarn/issues/5808

我在package.json文件中创建了一个脚本命令来修复它。它创建yarn.lock的副本作为package-lock.json,删除问题,然后重新创建yarn.lock。

"resolve:security": "npm i --package-lock-only && npm audit fix && rm yarn.lock && yarn import && rm package-lock.json",

我希望它对:)有所帮助

1st

始终使用源代码管理并首先签入package.json以及yarn.lock和/或package-lock.json,然后从所有提交的文件开始,以便在需要时轻松回滚。

一个不向项目添加依赖项(也不安装第三方库)的解决方案怎么样?

yarn outdated         # view
yarn audit            # view 
yarn install --audit  # install

更喜欢交互式方式轻松有选择地升级?

yarn upgrade-interactive

这可能会满足您的所有要求。

奇怪的是,您可能会发现在该命令后面使用yarn audit,您仍然有一些命令yarn upgrade-interactive中未提及的漏洞。在这种情况下,我首先要考虑这一点:

yarn upgrade-interactive --latest

在哪里可以找到

还是不够好? ``` 纱线升级--最新 ```我已经看到了许多其他潜在的解决方案,以前我只是按照一些用户的建议暂时从yarn切换到npm,然后切换回yarn。这对我来说也很好用。(虽然烦人且不优雅)

有些软件包不需要安装即可运行。 我还没有尝试过这个,它可能也很好:

npm_config_yes=true npx yarn-audit-fix

裁判

这里的关键是您使用npx来避免作为依赖项安装。

还有更多的解决方案是可能的。npmyarn都是包管理器,依赖管理是一件非常困难的事情,自动修复这些依赖关系将始终是一个难以解决的问题。因此,如果您有时间,我建议您对他们如何实际解决这些问题进行一些研究。你可能会发现自己不喜欢他们做事的方式。

最终,只要你能回滚,你就可以尝试很多这些,自己看看。某些包严重性可能不需要修复,有时库还没有可用的解决方案,那么您需要考虑在代码库中删除它们的用法。理论上,少即是多,对使用库的库的依赖性越来越少,使用库的库......成为攻击者攻击的更小的表面。此外,不建议使用来自不受信任来源的库,npmyarn等无法立即知道一切,因此也要考虑这一点。

执行yarn audit并找到存在漏洞的软件包,

如果它们在您的 package.json 文件中

  • 从那里修复他们的版本

  • 它们是包的依赖项,因此请将其添加到package.json文件中
"resolutions": {
"**/package-name": "known-good-version",
"**/**/package-name": "known-good-version"
}

您可以使用其他答案中提到的yarn audit,但是,有一种不同的方法可以解决它们......

您将需要添加resolution指令来指定解析 vunerability 的库版本和依赖项的路径(因为库可以是另一个依赖项的依赖项,例如:

考虑下面一些包.json的一部分

{
"name": "project",
"version": "1.0.0",
"dependencies": {
"left-pad": "1.0.0",
"c": "file:../c-1",
"d2": "file:../d2-1"
},
"resolutions": {
"d2/left-pad": "1.1.1",
"c/**/left-pad": "^1.1.2"
}
}

更多详细信息可以直接在文档中查看:文档

Yarn 也有yarn audit机制,但它没有yarn audit fix机制。因此,在大多数情况下,您必须手动解决这些问题。这就是它的工作原理。例如,我们将使用最小化包来演示它:

  • package.json文件中添加resolutions密钥:
  1. 直接添加依赖(比如minimist)作为键值。此分辨率将完全覆盖项目中的minimist
{
"resolutions": {
"minimist": "^1.2.5"
}
}
  1. 在大多数情况下,项目中可以有多个依赖项使用相同的辅助依赖项,但是,它们可能使用这些依赖项的不同版本。值得庆幸的是,yarn/npm 允许我们有选择性的依赖解析。

定义resolutions的格式如下:

/* package.json */
{
"resolutions": {
"<package>/**/<dependency>": "<version>"
}
}

例如,假设我们有一个依赖AB,它们都依赖于另一个依赖C

然后我们的分辨率字段将如下所示:

/* package.json */
{
"resolutions": {
"A/**/C": "2.0.3", // A works fine with the latest version of C
"B/**/C": "1.9.0" // latest stable version for C for dependency B
}
}

让我们通过package-merge-lodash-4包的示例进一步了解它是如何工作的。如果审计说lodash@3.9.3有漏洞并建议我们升级lodash@3.9.3 -> 4.17.12.

我们只能为相关包编写 json 文件的分辨率,如下所示:

{
"resolutions": {
"package-merge-lodash-4/**/lodash": "4.17.12"
}
}
  1. 如何在 npm 中使用选择性依赖解析?
将密钥

添加到文件后resolutionspreinstall脚本中添加npm-force-resolutionspackage.json以便在每次运行npm install之前修补package-lock文件:

"scripts": {
"preinstall": "npx npm-force-resolutions"
}

要确认安装了正确的版本,请使用以下命令

npm ls <vulnerable dependency>
npm ls lodash

资源:

  • 选择性依赖项解析
  • 纱线 - 如何解决安全问题
  • 如何修复 NPM/Yarn 依赖项中的安全漏洞
  • 纱线审核修复:解决方法
  • package.json 中的 tilde(~) 和 caret(^) 有什么区别?
  • Semver 解释 - 为什么我的 package.json 中有一个插入符号 (^)?

Yarn 目前不支持修复,

解决方法

  • 使用 npm 创建一个 package-lock.json 文件。
  • 修复软件包
  • 删除package-lock.json

.

npm i --package-lock-only
npm audit fix
rm package-lock.json

并启动

yarn start

尝试使用,

yarn upgrade-interactive --latest

将安装所有最新的依赖项。

如果使用yarn3,你可以做到:

yarn npm audit

相关内容

  • 没有找到相关文章

最新更新