npm 审计是否有纱线替代方案?
is there a yarn alternative for npm audit?
需要 yarn 的固定分辨率功能,但还想用 npm audit
进行审核? npm audit
有纱线替代品吗?或者,在 npm
?
中,依赖项的依赖项的固定解决方案是否有效?
我认为它在 yarn 上还没有准备好。您可以参考以下问题。
https://github.com/yarnpkg/yarn/issues/5808
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
您可以使用其他答案中提到的yarn audit
,但是,有不同的方法来解决它们...
你需要添加resolution
指令来指定解决漏洞的库的版本和依赖的路径(因为库可以是另一个依赖的依赖,例如:
考虑部分package.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"
}
}
更多细节可以直接在文档中查看:Doc
Yarn 没有 npm audit fix
.
但这是暂时使用 npm
的方法。
- 生成
package-lock.json
文件而不安装节点模块
npm i --package-lock-only
- 修复包并更新
package-lock.json
文件
npm audit fix
- 删除
yarn.lock
文件并将package-lock.json
文件转换成yarn.lock
rm yarn.lock
yarn import
- 删除
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
并找到有漏洞的包,
如果它们在您的 package.json 文件中
- 从那里修复他们的版本
其他
- 它们是您的包的依赖项,因此将其添加到 package.json 文件
"resolutions": {
"**/package-name": "known-good-version",
"**/**/package-name": "known-good-version"
}
Yarn 目前不支持修复,
解决方法
- 使用 npm 创建一个包-lock.json 文件。
- 修复软件包
- 删除
package-lock.json
.
.
npm i --package-lock-only
npm audit fix
rm package-lock.json
开始
yarn start
第一
始终使用源代码管理并首先检查您的 package.json
以及您的 yarn.lock
and/or 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
来避免安装为依赖项。
还有很多可能的解决方案。 npm
和 yarn
都是包管理器,依赖管理是一件非常困难的事情,自动修复这些依赖永远是一个很难解决的问题。因此,如果您有时间,我建议您对他们如何实际解决这些问题进行一些研究。您可能会发现自己不喜欢他们做事的方式。
最终,只要你能回滚,你就可以尝试很多这些,然后自己看看。一些包的严重程度可能不需要修复,有时库还没有可用的解决方案,那么你需要考虑在你的代码库中删除它们的使用。从理论上讲,少即是多,对使用库的库的依赖性越小,使用库的库就越少......成为攻击者目标的更小表面。此外,不建议使用来自不受信任来源的库,npm
、yarn
等无法知道所有内容,也不能立即知道,因此也要考虑到这一点。
Yarn 也有yarn audit
机制,但它没有yarn audit fix
机制。所以在大多数情况下,您必须手动修复这些问题。这就是它的工作原理。例如,我们将使用 minimist 包进行演示:
- 在您的
package.json
文件中添加一个 resolutions
键:
- 直接添加依赖项(例如
minimist
)作为键值。此解决方案将完全覆盖您项目中的 minimist
。
{
"resolutions": {
"minimist": "^1.2.5"
}
}
- 在大多数情况下,一个项目中可以有多个依赖项使用相同的次级依赖项,但是,它们可能使用这些依赖项的不同版本。值得庆幸的是,yarn/npm 允许我们有选择性的依赖性解决方案。
定义resolutions
的格式如下:
/* package.json */
{
"resolutions": {
"<package>/**/<dependency>": "<version>"
}
}
例如,我们有一个依赖项 A
和 B
,它们都依赖于另一个依赖项 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"
}
}
add npm-force-resolutions
to the preinstall
script after you added resolutions
key to package.json
file, so that it patches the package-lock
file before every npm install
you run:
"scripts": {
"preinstall": "npx npm-force-resolutions"
}
要确认安装了正确的版本,请使用以下命令
npm ls <vulnerable dependency>
npm ls lodash
资源:
- Selective dependency resolutions
- Yarn - How to fix security issues
- How to fix security vulnerabilities in NPM/Yarn dependencies
- Yarn audit fix: workaround
- What's the difference between tilde(~) and caret(^) in package.json?
- Semver explained - why is there a caret (^) in my package.json?
需要 yarn 的固定分辨率功能,但还想用 npm audit
进行审核? npm audit
有纱线替代品吗?或者,在 npm
?
我认为它在 yarn 上还没有准备好。您可以参考以下问题。 https://github.com/yarnpkg/yarn/issues/5808
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
您可以使用其他答案中提到的yarn audit
,但是,有不同的方法来解决它们...
你需要添加resolution
指令来指定解决漏洞的库的版本和依赖的路径(因为库可以是另一个依赖的依赖,例如:
考虑部分package.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"
}
}
更多细节可以直接在文档中查看:Doc
Yarn 没有 npm audit fix
.
但这是暂时使用 npm
的方法。
- 生成
package-lock.json
文件而不安装节点模块
npm i --package-lock-only
- 修复包并更新
package-lock.json
文件
npm audit fix
- 删除
yarn.lock
文件并将package-lock.json
文件转换成yarn.lock
rm yarn.lock
yarn import
- 删除
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
并找到有漏洞的包,
如果它们在您的 package.json 文件中
- 从那里修复他们的版本
其他
- 它们是您的包的依赖项,因此将其添加到 package.json 文件
"resolutions": {
"**/package-name": "known-good-version",
"**/**/package-name": "known-good-version"
}
Yarn 目前不支持修复,
解决方法
- 使用 npm 创建一个包-lock.json 文件。
- 修复软件包
- 删除
package-lock.json
.
.
npm i --package-lock-only
npm audit fix
rm package-lock.json
开始
yarn start
第一
始终使用源代码管理并首先检查您的 package.json
以及您的 yarn.lock
and/or 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
来避免安装为依赖项。
还有很多可能的解决方案。 npm
和 yarn
都是包管理器,依赖管理是一件非常困难的事情,自动修复这些依赖永远是一个很难解决的问题。因此,如果您有时间,我建议您对他们如何实际解决这些问题进行一些研究。您可能会发现自己不喜欢他们做事的方式。
最终,只要你能回滚,你就可以尝试很多这些,然后自己看看。一些包的严重程度可能不需要修复,有时库还没有可用的解决方案,那么你需要考虑在你的代码库中删除它们的使用。从理论上讲,少即是多,对使用库的库的依赖性越小,使用库的库就越少......成为攻击者目标的更小表面。此外,不建议使用来自不受信任来源的库,npm
、yarn
等无法知道所有内容,也不能立即知道,因此也要考虑到这一点。
Yarn 也有yarn audit
机制,但它没有yarn audit fix
机制。所以在大多数情况下,您必须手动修复这些问题。这就是它的工作原理。例如,我们将使用 minimist 包进行演示:
- 在您的
package.json
文件中添加一个resolutions
键:
- 直接添加依赖项(例如
minimist
)作为键值。此解决方案将完全覆盖您项目中的minimist
。
{
"resolutions": {
"minimist": "^1.2.5"
}
}
- 在大多数情况下,一个项目中可以有多个依赖项使用相同的次级依赖项,但是,它们可能使用这些依赖项的不同版本。值得庆幸的是,yarn/npm 允许我们有选择性的依赖性解决方案。
定义resolutions
的格式如下:
/* package.json */
{
"resolutions": {
"<package>/**/<dependency>": "<version>"
}
}
例如,我们有一个依赖项 A
和 B
,它们都依赖于另一个依赖项 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"
}
}
add
npm-force-resolutions
to thepreinstall
script after you addedresolutions
key topackage.json
file, so that it patches thepackage-lock
file before everynpm install
you run:
"scripts": {
"preinstall": "npx npm-force-resolutions"
}
要确认安装了正确的版本,请使用以下命令
npm ls <vulnerable dependency>
npm ls lodash
资源:
- Selective dependency resolutions
- Yarn - How to fix security issues
- How to fix security vulnerabilities in NPM/Yarn dependencies
- Yarn audit fix: workaround
- What's the difference between tilde(~) and caret(^) in package.json?
- Semver explained - why is there a caret (^) in my package.json?