繁体   English   中英

NPM 审计警告

[英]NPM audit warnings

鉴于有问题的库属于第 3 方库,我应该如何处理这些警告?

> npm audit

                       === npm audit security report ===


                                 Manual Review
             Some vulnerabilities require your attention to resolve

          Visit https://go.npm.me/audit-guide for additional guidance


  Low             Denial of Service

  Package         node-fetch

  Patched in      >=2.6.1 <3.0.0-beta.1|| >= 3.0.0-beta.9

  Dependency of   aspnet-prerendering

  Path            aspnet-prerendering > domain-task > isomorphic-fetch >
                  node-fetch

  More info       https://npmjs.com/advisories/1556


  Moderate        Regular Expression Denial of Service

  Package         postcss

  Patched in      >=8.2.10

  Dependency of   @angular-devkit/build-angular [dev]

  Path            @angular-devkit/build-angular > resolve-url-loader > postcss

  More info       https://npmjs.com/advisories/1693

found 2 vulnerabilities (1 low, 1 moderate) in 1514 scanned packages
  2 vulnerabilities require manual review. See the full report for details.

我不受此影响。 我只是在各个方面争取零警告。

我不能/不想摆弄依赖项的依赖项? 我只需要升级我的依赖项吗?

从技术上讲,没有解决npm audit报告的漏洞的灵丹妙药。 这是我遵循的“经验法则”:

  • 通常,我总是在 npm 审计之后进行npm audit npm audit fix 请注意:这一项不会解决所有报告。

  • 将我的依赖项更新到最新的稳定版。 注意兼容性。 (希望您了解 SEMVER)。 您为使系统保持最新和稳定所花费的成本总是比您处理易受攻击问题所需的成本要便宜。

  • 减少依赖项的数量。 请注意使用该库所需的一切。 您可以为自己构建一个更简单的版本。

  • 学会分离dependenciesdev dependencies 如果针对开发工具报告了该问题,您可以跳过它。 正如我上面所说,没有灵丹妙药,所以让自己放松一下,而不是解决所有问题。 只需修复必要的。

  • 最后,按照这个: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities

您可以使您的依赖项使用其依赖项的其他(当前/安全)版本。

假设你有一个关于postcss package 的警告,我刚才解决了这个问题,所以我可以描述这个过程,你可以类推。

npm audit后,我收到如下警告:

  Moderate        Regular Expression Denial of Service                          
  Package         postcss                                                       
  Patched in      >=8.2.10                                                      
  Dependency of   laravel-mix [dev]                                             
  Path            laravel-mix > cssnano > cssnano-preset-default >              
                  postcss-svgo > postcss                                        
  More info       https://npmjs.com/advisories/1693  

注意! 您必须意识到,当您使 package 使用其依赖项的更新版本时,它可能会破坏事情,但值得尝试。

因此,您会看到laravel-mix package 使用旧版本的postcss ,并且该问题已在postcss>=8.2.10 8.2.10 版本中修复,因此您想安装更新版本的postcss package,您可以通过以下方式实现:

npm install postcss --save-dev

然后,您需要在package.json文件中添加一个新部分,指示 npm 您希望依赖项使用您的特定版本的库。 在我的情况下是这样的:

{
  "resolutions": {
    "postcss": "^8.2.15",
  }
}

然后你必须添加一个新脚本来强制 npm 使用这个新的“分辨率”部分,如下所示:

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

注意! 在运行常规npm install之前,您必须每次运行此脚本。 它是这样的:

npm run preinstall
npm install

更多信息可以在npm 文档中找到。

You might just need to edit your package.json, update the version for the offending package to the latest stable version (in this case https://www.npmjs.com/package/node-fetch ), and then run "npm install “从终端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM