NodeJS github依赖实验室警报:nth-check中的低效正则表达式复杂度

2nc8po8w  于 2023-01-12  发布在  Node.js
关注(0)|答案(8)|浏览(266)

可能重复,但找不到任何明确的答案。
Dependabot无法将nth-check更新为无漏洞的版本。由于以下〉冲突的依赖关系,可以安装的最新可能版本为1.0.2:
react-scripts@5.0.0需要通过css-select@2.1.0上的传递依赖项执行第n次检查@^1.0.2
刚刚从4.0.0升级到react-scripts@5.0.0。

bakd9h0s

bakd9h0s1#

正如Dan Abramov在this问题中解释的那样,这(很可能)是一个假警报,可以安全地解除。
更具体地说,如果您正在使用CRA,并且仅从CRA引用第n次检查,则这不是问题,因为CRA是一个构建工具,易受攻击的代码永远不会进入生成的应用程序包,因此永远不会被客户端代码调用。
您可以通过将“react-scripts”移到package.json中的“devDependencies”并运行npm audit --production来验证这一点。

mv1qrgav

mv1qrgav2#

在告诉您解决方法之前,请注意以下几点:
1.看起来react-scripts漏洞是一个假警报(如here所讨论的)。Dan Abramov还写了一篇引人入胜的深入的blog post文章,讲述了npm audit是如何工作的,以及它是如何以某种方式被破坏的,特别是对于设计的前端工具。
1.由于react-scripts本质上是一个构建工具,因此即使漏洞确实存在,它也只会被视为一个开发问题,因为它无论如何都会从产品包中剥离出来。
因此,如果你对这个所谓的“漏洞”什么都不做,就不会发生什么坏事,一切都很好。但如果存在漏洞的红色警报在美学上惹恼了你,或者破坏了你的CI/CD,那么请继续阅读。

解决方法:

问题似乎是从lib @svgr/webpack 4.0.0 - 5.0.0开始的。
如果您使用的是node version〉= 16,您可以自己安装@svgr/webpack,在我的例子中,我安装了版本:^6.2.1作为devDependency

之后,您应该在package.json中创建一个覆盖(或解决方案,如果您使用yarn)部分,并包含以下行:"@svgr/webpack": "$@svgr/webpack".

最后,必须删除node_modules文件夹和package-lock.json,然后执行npm install
变通办法信贷。

zbdgwd5y

zbdgwd5y3#

我确认从react-scripts 5.0.1开始,您可以将您的react脚本版本从package.json中的“dependencies”移动到“devDependencies”,如下所示:

"devDependencies": {
    "react-scripts": "^5.0.1"
  },

devDependencies是指在开发阶段需要在文件中使用或作为二进制文件运行的包。这些包仅在开发期间需要,而在生产版本中不需要。
运行“npm audit --production”以表明您在生产环境中不需要React脚本。
当然,如果您仍然遇到漏洞,则可能是其他软件包导致了该漏洞。
https://dev.to/moimikey/demystifying-devdependencies-and-dependencies-5ege

ccgok5k5

ccgok5k54#

打开package.json,您将看到以下内容:

"dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3"
  }

获取react-scripts并将其移动到devDependencies(如果没有,请创建它):

"dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "devDependencies": {
    "react-scripts": "4.0.3"
  },

然后,确保运行"npm audit --production"
这将修复您的警告。

jhdbpxl9

jhdbpxl95#

我也在使用React脚本@^5.0.0
所以,我个人还是建议先用Yarn。不过每个人都有自己的喜好!这样做,可以打字

npm install --global yarn

之后,您可以删除您的package-lock文件,并在您的应用程序的文件夹中运行以下命令

yarn

(such这将生成一个yarn.lock文件。注意,您应该避免同时使用yarn和npm!
在同一个yarn.lock文件中,你必须搜索第nth-check字符串!在一个全新的react应用程序中(到目前为止),你应该找到8个出现的字符串。这个字符串将被设置在软件包版本旁边。这就是你想要修改的。
在我的例子中,我有

nth-check@^1.0.2: //so far. This version can be different for an older projet.
  version "1.0.2"
  resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"

你想修改所有错误的版本,它应该看起来像这样:

nth-check@^2.0.1:
  version "2.0.1"
  resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz"

你将不得不改变一对夫妇的版本虽然。不只是一个。我编辑它(-6倍,我相信。如果你保存文件,启动一个简单的

yarn

命令,后跟

yarn audit

应该能解决你的一个问题!
希望这对你有帮助,干杯!

brccelvz

brccelvz6#

如果上面提到的任何方法都不起作用,那么试试这个:
首先使用
纳米粒子检测
现在,如果代码中未使用漏洞模块,则转到"package-lock.json"并搜索漏洞路径,如
节点模块/svgo/节点模块/第n次检查
并在json文件中删除此依赖项
那就跑
国家预防机制审计
这将显示

found 0 vulnerabilities

这通常发生在使用
npx创建React应用程序"应用程序"
并试图安装一个模块"React脚本"

zzwlnbp8

zzwlnbp87#

并选中" npm -g list "
"npm install -g create-react-app"
之后"npx create-react-app ./"

r8xiu3jd

r8xiu3jd8#

我不得不将一个特定的依赖项及其子依赖项版本更改为2.0.1,在我的案例中,出现问题的依赖项是“css-select@npm:^2.0.0”,
只需在yarn.lock文件中搜索第n次检查,您将发现第n次检查依赖项作为“css-select@npm:^2.0.0”中的子依赖项,您需要将版本从“1.0.2”更改为“2.0.1”,其外观如下所示

css-select@npm:^2.0.0":
  version: 2.1.0
  resolution: "css-select@npm:2.1.0"
  dependencies:
    boolbase: ^1.0.0
    css-what: ^3.2.1
    domutils: ^1.7.0
    nth-check: ^2.0.1 // this is where you need to make change
  checksum: 0c4099910f2411e2a9103cf92ea6a4ad738b57da75bcf73d39ef2c14a00ef36..
  languageName: node
  linkType: hard

任何仍使用此旧版本的第n次检查作为子依赖项的依赖项都必须更新,这将解决该问题

相关问题