修复 NPM 漏洞
Fixing NPM vulnerabilities
我正在学习 TypeScript 教程。不幸的是,这些软件包已过时,我收到了有关漏洞的警告。
我遵循了 npm check and update package if needed 的一系列建议,即:
npm audit fix
npm audit fix --force
npm update
npm audit
说还有 24 个漏洞。但上述命令中的 none 将修复它们。
npm outdated
结果没有输出。
易受攻击的软件包是:
ansi-regex
glob-parent
node-forge
nth-check
postcss
我实际上不知道为什么它们是我项目的一部分,我的 package.json
配置中没有它们。
修复这些漏洞的后续步骤是什么?
我试过:
- How to fix npm vulnerabilities?
没有答案。
- 手动将
package.json
中的依赖项更新到较新的版本,然后 运行 更新 npm install
。没有效果。
- 根据建议删除
package-lock.json
here 然后 运行 再次 npm install
。
- 添加
"ansi-regex": "^6.0.1", "glob-parent": "^6.0.2", "node-forge": "^1.3.0", "nth-check": "^2.0.1", "postcss": "^8.4.12"
作为 devDependencies 和 运行ning npm install
.
- 运行宁
npm i npm@latest
如 How to fix NPM vulnerabilities 中所建议
- How to fix npm vulnerabilities? I tried two methods, problems persist 没有任何新建议
- I have 5 moderate severity vulnerabilities when I checked the npm audit. How can I fix these errors given below? 也没有建议任何新命令
- 运行宁
npm update glob-parent --depth 2
只是为了发现 --depth
已被弃用,NPM 总是 updates any depth [Github]
- 运行宁
npm prune
- 删除
node_modules
文件夹并再次 运行 宁 npm install
您可以在空目录中使用以下 package.json
和 运行ning npm install
.
重现我的最新状态
{
"name": "pacman",
"version": "0.0.1",
"description": "I just follow a tutorial. Nothing of interest.",
"keywords": ["game"],
"license": "MIT",
"author": "someone stupid",
"scripts": {
"build": "parcel build index.html",
"dev": "parcel index.html --open",
"start": "npm run build && npm run dev",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.16.0",
"@typescript-eslint/parser": "^5.16.0",
"ansi-regex": "^6.0.1",
"eslint": "^8.12.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.0.0",
"glob-parent": "^6.0.2",
"node-forge": "^1.3.0",
"nth-check": "^2.0.1",
"parcel": "^2.4.0",
"parcel-bundler": "^1.12.5",
"postcss": "^8.4.12",
"prettier": "^2.6.1",
"typescript": "^4.6.3"
},
"dependencies": {
"npm": "^8.5.5"
}
}
这应该给你 24 个漏洞,18 个中等和 6 个高(在撰写本文时,运行ning npm 8.5.5)。
根据评论,我已经尝试了一般情况下的所有命令,在这种情况下,您需要开始分析单个包。
那么,我做了什么?
- 将所有依赖项更新到最新版本。
接下来,通过删除一半依赖项并重复以下步骤来执行二进制搜索
- 删除
node_modules
文件夹
- 运行
npm install
- 运行
npm audit
检查漏洞
如果没有漏洞,请添加您要安装的剩余软件包的一半。
如果存在漏洞,请删除您当前安装的一半软件包。
在我的例子中,这个过程归结为以下两行:
"parcel": "^2.4.0",
"parcel-bundler": "^1.12.5",
对于 parcel-bundler
,NPM 发出警告:
npm WARN deprecated parcel-bundler@1.12.5: Parcel v1 is no longer maintained.
Please migrate to v2, which is published under the 'parcel' package.
所以我想我根本不需要 parcel-bundler
,因为它已经集成到 parcel
包中,我已经在前面的步骤中将其更新到版本 2。
我正在学习 TypeScript 教程。不幸的是,这些软件包已过时,我收到了有关漏洞的警告。
我遵循了 npm check and update package if needed 的一系列建议,即:
npm audit fix
npm audit fix --force
npm update
npm audit
说还有 24 个漏洞。但上述命令中的 none 将修复它们。
npm outdated
结果没有输出。
易受攻击的软件包是:
ansi-regex
glob-parent
node-forge
nth-check
postcss
我实际上不知道为什么它们是我项目的一部分,我的 package.json
配置中没有它们。
修复这些漏洞的后续步骤是什么?
我试过:
- How to fix npm vulnerabilities? 没有答案。
- 手动将
package.json
中的依赖项更新到较新的版本,然后 运行 更新npm install
。没有效果。 - 根据建议删除
package-lock.json
here 然后 运行 再次npm install
。 - 添加
"ansi-regex": "^6.0.1", "glob-parent": "^6.0.2", "node-forge": "^1.3.0", "nth-check": "^2.0.1", "postcss": "^8.4.12"
作为 devDependencies 和 运行ningnpm install
. - 运行宁
npm i npm@latest
如 How to fix NPM vulnerabilities 中所建议
- How to fix npm vulnerabilities? I tried two methods, problems persist 没有任何新建议
- I have 5 moderate severity vulnerabilities when I checked the npm audit. How can I fix these errors given below? 也没有建议任何新命令
- 运行宁
npm update glob-parent --depth 2
只是为了发现--depth
已被弃用,NPM 总是 updates any depth [Github] - 运行宁
npm prune
- 删除
node_modules
文件夹并再次 运行 宁npm install
您可以在空目录中使用以下 package.json
和 运行ning npm install
.
{
"name": "pacman",
"version": "0.0.1",
"description": "I just follow a tutorial. Nothing of interest.",
"keywords": ["game"],
"license": "MIT",
"author": "someone stupid",
"scripts": {
"build": "parcel build index.html",
"dev": "parcel index.html --open",
"start": "npm run build && npm run dev",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.16.0",
"@typescript-eslint/parser": "^5.16.0",
"ansi-regex": "^6.0.1",
"eslint": "^8.12.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.0.0",
"glob-parent": "^6.0.2",
"node-forge": "^1.3.0",
"nth-check": "^2.0.1",
"parcel": "^2.4.0",
"parcel-bundler": "^1.12.5",
"postcss": "^8.4.12",
"prettier": "^2.6.1",
"typescript": "^4.6.3"
},
"dependencies": {
"npm": "^8.5.5"
}
}
这应该给你 24 个漏洞,18 个中等和 6 个高(在撰写本文时,运行ning npm 8.5.5)。
根据评论,我已经尝试了一般情况下的所有命令,在这种情况下,您需要开始分析单个包。
那么,我做了什么?
- 将所有依赖项更新到最新版本。
接下来,通过删除一半依赖项并重复以下步骤来执行二进制搜索
- 删除
node_modules
文件夹 - 运行
npm install
- 运行
npm audit
检查漏洞
如果没有漏洞,请添加您要安装的剩余软件包的一半。
如果存在漏洞,请删除您当前安装的一半软件包。
在我的例子中,这个过程归结为以下两行:
"parcel": "^2.4.0",
"parcel-bundler": "^1.12.5",
对于 parcel-bundler
,NPM 发出警告:
npm WARN deprecated parcel-bundler@1.12.5: Parcel v1 is no longer maintained.
Please migrate to v2, which is published under the 'parcel' package.
所以我想我根本不需要 parcel-bundler
,因为它已经集成到 parcel
包中,我已经在前面的步骤中将其更新到版本 2。