关于安全审核
关于安全审核
安全审核是对安全漏洞的包依赖性的评估。安全审核通过使您能够查找和修复可能导致数据丢失,服务中断,未经授权访问敏感信息或其他问题的已知漏洞,帮助您保护软件包的用户。
运行安全审计 npm audit
注意:该npm audit命令在npm @ 6中可用。要升级,请运行npm installnpm@latest
-g。
该npm audit
命令将包中配置的依赖关系的描述提交到默认注册表,并要求提供已知漏洞的报告。npm audit
检查直接依赖项,devDependencies
,bundledDependencies
和optionalDependencies
,但不检查peerDependencies
。
npm audit
安装包时自动运行npm install
。您还npm audit
可以在本地安装的软件包上手动运行以对软件包进行安全审核,并生成依赖性漏洞的报告,如果可用,还会生成建议的修补程序。
- 在命令行上,键入
cd path/to/your-package-name
并按Enter键
导航到包目录。
解决EAUDITNOPJSON和EAUDITNOLOCK错误
npm audit
需要包package.json
和package-lock.json
文件。
- 如果出现
EAUDITNOPJSON
错误,请package.json
按照“ 使用package.json
”中的步骤创建文件。
审查并处理安全审计报告
运行npm audit
将生成安全漏洞报告,其中包含受影响的程序包名称,漏洞严重性和描述,路径以及其他信息,以及应用修补程序以解决漏洞的命令(如果有)。有关审计报告中字段的详细信息,请参阅“ 关于审计报告 ”
建议更新时发现安全漏洞
如果发现安全漏洞并且有可用更新,您可以:
- 运行
npm audit fix
子命令以自动为易受攻击的依赖项安装兼容的更新。
SEMVER警告
如果建议的操作是潜在的突破性更改(语义版本主要更改),则会出现SEMVER WARNING
。如果包含漏洞的软件包更改了其API,则可能需要对软件包的代码进行其他更改。
发现需要手动审查的安全漏洞
如果发现安全漏洞,但没有可用的修补程序,审计报告将提供有关漏洞的信息,以便您进一步调查。
要解决此漏洞,您可以
- 检查缓解因素
检查缓解因素
查看“更多信息”字段中的安全公告,了解可能允许您在有限情况下继续使用包含漏洞的缓解因素。例如,只有在特定操作系统上使用代码或调用特定函数时,漏洞才可能存在。
如果存在修复,则更新相关包
如果存在修复程序,但依赖于具有漏洞的程序包的程序包尚未更新以包含固定版本,则可能需要在依赖程序包存储库上打开pull或merge请求以使用固定版本。
- 要查找必须更新的软件包,请在“路径”字段中查看包含漏洞的软件包的位置,然后检查依赖于该软件包的软件包。例如,如果是漏洞的路径@package-name > dependent-package > package-with-vulnerability,则需要更新dependent-package。
修复漏洞
如果修复程序不存在,您可能需要在程序包存储库上的pull或merge请求中建议更改以解决程序包维护者的漏洞。
- 检查“路径”字段以获取漏洞的位置。
打开包或从属包问题跟踪器中的问题
如果您不想自行修复漏洞或更新相关软件包,请在软件包或相关软件包问题跟踪器中打开一个问题。
- 在npm公共注册表中,找到包含漏洞的程序包或需要更新的依赖程序包。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
未发现任何安全漏洞
如果未发现任何安全漏洞,则表示在包依赖关系树中找不到具有已知漏洞的软件包。由于咨询数据库可以随时更新,我们建议您定期npm audit
手动运行,或者添加npm audit
到持续集成过程中。
关闭npm audit包安装
安装单个包
要npm audit
在安装单个程序包时关闭,请使用以下--no-audit
标志:
npm install example-package-name --no-audit
有关更多信息,请参阅npm-install命令。
安装所有包
要npm audit
在安装所有软件包时关闭,请在用户和全局npmrc配置文件中将audit
设置设置为false
:
npm set audit false
有关更多信息,请参阅npm-config管理命令和npm-config审计设置。