github Dependabot 警报:nth-​​check 中的正则表达式复杂性低效

Abd*_*yev 47 security github node.js reactjs

可能重复,但找​​不到任何明确的答案。

Dependabot 无法将 nth-check 更新到无漏洞版本 由于以下>冲突的依赖项,可以安装的最新可能版本是 1.0.2:

react-scripts@5.0.0 通过对 css-select@2.1.0 的传递依赖需要 nth-check@^1.0.2

刚刚从 4.0.0 升级到react-scripts@5.0.0。

kid*_*ney 73

正如丹·阿布拉莫夫(Dan Abramov)在本期中所解释的那样,这(很可能)是一场误报,可以安全地消除。

更具体地说,如果您使用 CRA 并且仅从中引用 nth-check,则这不是问题,因为 CRA 是一个构建工具,易受攻击的代码永远不会进入生成的应用程序包,因此永远不会被客户端调用代码。

您可以通过将“react-scripts”移动到“devDependency”中package.json并运行来验证这一点npm audit --production

  • 我尝试了这种方法,但 GitHub 的 Dependabot 仍然将其标记为问题,即使我的“npmaudit--production”显示“发现 0 个漏洞”。 (3认同)

Mah*_*ary 31

在告诉您解决方法之前先说几点:

  1. 该漏洞似乎react-scripts是误报(如此处所述。Dan Abramov 还写了一篇引人入胜的深入博客文章,介绍了npm audit它的工作原理以及它如何在某种程度上被破坏,特别是对于前端工具的设计。

  2. 由于react-scripts本质上是一个构建工具,即使该漏洞确实是真实的,它也只会被视为一个开发问题,因为无论如何它都会从生产包中删除。

因此,如果您对这个所谓的“漏洞”不采取任何措施,就不会发生任何不好的事情,而且完全没问题。但是,如果存在漏洞的红色警报在美观上让您烦恼或者破坏了您的 CI/CD,那么请继续阅读。

解决方法:

问题似乎是从 lib 开始的@svgr/webpack 4.0.0 - 5.0.0

如果您使用的node版本 >= 16,您可以@svgr/webpack自行安装,在我的例子中我安装的版本:^6.2.1as devDependency

在此输入图像描述

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

在此输入图像描述

最后,您必须删除node_modules文件夹和package-lock.json, 并执行npm install.

解决办法信用。

  • `"overrides": { "react-scripts": { "@svgr/webpack": "^6.5.1" } }` 这将是一个更好的方法 (3认同)

小智 9

我确认从 React-scripts 5.0.1 开始它仍然有效,您可以将您的 React 脚本版本从 package.json 中的“依赖项”移动到“devDependency”,如下所示:

 "devDependencies": {
    "react-scripts": "^5.0.1"
  },
Run Code Online (Sandbox Code Playgroud)

“devDependency 是在开发阶段通过在文件中要求它们或作为二进制文件运行而消耗的包。这些包仅在开发期间需要,而对于生产构建不是必需的。”

运行“npmaudit--production”以表明您在生产中不需要反应脚本。

当然,如果您仍然遇到漏洞,则可能是另一个包导致了该漏洞。

https://dev.to/moimikey/demystifying-devdependencies-and-dependency-5ege


小智 8

打开 package.json。你会发现这个:

"dependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3"
  }
Run Code Online (Sandbox Code Playgroud)

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

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

Run Code Online (Sandbox Code Playgroud)

然后,确保你运行"npm audit --production"

这将修复您的警告。