问题描述
我是 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 :
如果你对自己想要做什么没有一个明确的想法,那么强烈 建议您不要使用此选项!
我当然不知道,我想知道:
- 作为非专业开发人员,我能做些什么来解决这个问题
- 如果我不修复这些漏洞,我的生产应用就会不安全
根据@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
文件或至少 dependencies
和 devDependencies
条目,讨论/回答这些类型的问题会容易得多。)
如果 npm audit
列出的模块在那里,因为它们要么在 devDependencies
中,要么在您的 devDependencies
的依赖树中,那么有漏洞的代码很可能永远不会由用户执行。如果可以的话,您仍然应该修复问题,但根据经验,devDependencies
漏洞并不像 dependencies
漏洞那样令人担忧。 (考虑对由 critical
标记为 npm audit
的漏洞进行例外处理,并确保无论它们在哪里都得到修复,但根据您发布的输出,您没有任何这些漏洞。)
另一方面,如果 npm audit
列出的模块(尤其是标记为 high
或 critical
的模块)因为它们在您的 dependencies
您的 dependencies
中的条目或条目要求,那么这可能需要调查。
npm audit
的输出引起了一些争议,许多人认为它常常不必要地令人担忧且难以理解。 You are not alone.
UPDATE(在用户发布他们的 package.json
之后):使用 npm
6.x 版,当我对结果运行 npm audit
时,所有问题(在撰写本文时,当然!)在开发依赖项中。您可以通过以下行中的 npm
来判断(在 [dev]
版本 6 中 - 其他版本具有不同的输出):
因此,一方面,这里可能没有太多可担心的。另一方面,如果您设法更新其中一些报告问题的过时软件包,您可能会更快乐并且问题更少。一件看似简单且看似安全的事情会让您(我认为)只有两个警告,那就是将 @angular-devkit/build-angular
从 0.1101.4 更新到 0.1102.14(这是最新的 0.x 版本,如写这篇文章)。