如果您不是专家,不建议使用 npm audit --force。那怎么办?我的生产应用程序不安全吗?

npm audit --force is not recommended if you are not expert. What to do then? Is my app on production insecure?

我是 Angular 的新手,当我做典型的

npm install

我发现了像这样的常见警告(至少对我而言):

    found 42 vulnerabilities (40 moderate, 2 high)
    run `npm audit fix` to fix them, or `npm audit` for details

执行后

npm audit fix

然后我发现只有几个漏洞可以修复

    fixed 4 of 42 vulnerabilities in 1636 scanned packages
      3 vulnerabilities required manual review and could not be updated
      2 package updates for 35 vulnerabilities involved breaking changes
      (use `npm audit fix --force` to install breaking changes; or refer to `npm    audit` for steps to fix these manually)

我想学会正确地做事,我非常关心我的项目的安全性,但是,正如我所说,我想我对手动修复问题很陌生。

正在查找信息,我已阅读 official npm Docs :

If you don't have a clear idea of what you want to do, it is strongly recommended that you do not use this option!

我当然不知道,我想知道:

根据@Trott herte的回答给出更多内容是我的package.json文件

{
  "name": "test-exercise",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~11.1.2",
    "@angular/common": "~11.1.2",
    "@angular/compiler": "~11.1.2",
    "@angular/core": "~11.1.2",
    "@angular/forms": "~11.1.2",
    "@angular/platform-browser": "~11.1.2",
    "@angular/platform-browser-dynamic": "~11.1.2",
    "@angular/router": "~11.1.2",
    "rxjs": "~6.6.0",
    "tslib": "^2.0.0",
    "zone.js": "~0.11.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.1101.4",
    "@angular/cli": "~11.1.4",
    "@angular/compiler-cli": "~11.1.2",
    "@types/jasmine": "~3.6.0",
    "@types/node": "^12.11.1",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~5.2.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "protractor": "~7.0.0",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~4.1.2"
  }
}
 

关于您应该如何认真对待 npm audit 警告的答案是:这取决于。 (为了将来参考,如果您可以共享您的 package.json 文件,或者至少共享 dependenciesdevDependencies 条目,discuss/answer 这些类型的问题会容易得多。)

如果 npm audit 列出的模块存在是因为它们在 devDependencies 中或在您的 devDependencies 的依赖树中,那么很可能存在易受攻击的代码永远不会被用户执行。您仍然应该尽可能地修复 if/when 问题,但根据经验,devDependencies 漏洞并不像 dependencies 漏洞那样令人担忧。 (考虑对 npm audit 标记为 critical 的漏洞进行例外处理,并确保无论它们在哪里都得到修复,但根据您发布的输出,您没有任何这些漏洞。)

另一方面,如果 npm audit 列出的模块(尤其是带有 highcritical 的模块)出现是因为它们在您的 dependencies 条目或您 dependencies 中的条目所要求的条目,那么这可能值得调查。

npm audit 的输出是一些争议的来源,许多人认为它常常不必要地令人震惊且难以理解。 You are not alone.

更新(在用户发布他们的 package.json 之后):使用 npm 版本 6.x,当我 运行 npm audit 结果时,所有的问题(当然是在撰写本文时!)在开发依赖性中。你可以通过 [dev] 这样的行来判断(在 npm 版本 6——其他版本有不同的输出):

所以,一方面,这里可能没有太多值得担心的事情。另一方面,如果您设法更新其中一些报告问题的过时软件包,您可能会更快乐并且遇到更少的问题。一件看似容易且看似安全的事情会让你(我认为)只有两个警告是更新 @angular-devkit/build-angular 从 0.1101.4 到 0.1102.14(这是最近的 0.x撰写本文时的版本)。