我们在AngularJS 1.x上有一个web应用程序,它正在产生依赖关系问题->依赖库到raven扫描漏洞。
Package.json:
{
"name": "Test",
"dependencies": {
"angular": "1.6.9",
"angular-animate": "1.6.6",
"angular-aria": "1.6.9",
"angular-material": "1.1.9",
"angular-messages": "1.6.9",
"angular-route": "1.6.9",
"angular-touch": "1.6.9",
"angular-ui-router": "0.3.2",
"angular-smart-table": "2.1.8",
"angular-ui-bootstrap": "1.3.3",
"angular-ui-grid": "4.8.3",
"angular-ui-select": "0.12.10",
"uuid": "^3.3.2",
"bootstrap": "3.3.7",
"requirejs": "2.3.6",
"jquery": "3.3.1",
"grunt-cli": "1.3.2",
"grunt": "1.3.0",
"grunt-contrib-uglify": "4.0.1",
"grunt-contrib-jshint": "2.1.0",
"grunt-contrib-requirejs": "1.0.0",
"grunt-contrib-clean": "1.1.0",
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-cssmin": "2.2.1",
"grunt-contrib-concat": "1.0.1",
"grunt-processhtml": "0.4.2",
"grunt-front-end-modules": "1.1.0",
"grunt-karma": "3.0.0",
"underscore": "1.8.3",
"d3": "3.5.17",
"nvd3": "1.8.1",
"angular-file-saver": "1.1.3",
"smart-area": "2.0.0",
"csv-js": "1.0.0",
"pdfmake": "0.1.36",
"file-saver": "1.3.2",
"font-awesome": "4.7.0",
"angular-file-upload": "2.5.0"
}
}
Package-lock.json
...
"htmlprocessor": {
"version": "0.2.6",
"resolved": "https://fakepath",
"integrity": "sha1",
"requires": {
"lodash": "~2.4.1"
},
"dependencies": {
"lodash": {
**"version": "2.4.2",**
"resolved": "https://fakepath",
"integrity": "sha1"
}
}
},
...
例如,上面的-lodash需要更新到4.17.20分钟才能修复该漏洞。
我是将lodash添加为devDependency还是手动更新package-lock.json
注意-package-lock.json不是源代码管理的一部分,但我正在网上研究它应该是
我们也在解决应用程序中的安全漏洞,也遇到了类似的问题。没有好的答案:
-
当然,您可以手动编辑您的package-lock.json文件,但这只是在欺骗问题。它不会以某种方式消除lodash带来的漏洞,因为NPM将继续删除该版本。你最好要求豁免这一安全发现,而不是试图隐藏它。
-
为什么要撤下那个版本?您的一个devDependencies依赖于htmlprocessor。该处理器lib特别调用了该版本的lodash的使用。你可以向该库提交合并请求,将其更新到新版本的lodash,但它看起来不再维护了。
-
添加一个新版本的lodash作为devDependency意味着你现在依赖两个版本的lodash。它不会解决任何问题。
这是使用NPM的福与祸。轻松访问大量图书馆。。。但是,有许多不再维护的库被拉进来,充满了安全问题。