关于安全审核

关于安全审核

安全审核是对安全漏洞的包依赖性的评估。安全审核通过使您能够查找和修复可能导致数据丢失,服务中断,未经授权访问敏感信息或其他问题的已知漏洞,帮助您保护软件包的用户。

运行安全审计 npm audit

注意:该npm audit命令在npm @ 6中可用。要升级,请运行npm installnpm@latest -g。

npm audit命令将包中配置的依赖关系的描述提交到默认注册表,并要求提供已知漏洞的报告。npm audit检查直接依赖项,devDependenciesbundledDependenciesoptionalDependencies,但不检查peerDependencies

npm audit安装包时自动运行npm install。您还npm audit可以在本地安装的软件包上手动运行以对软件包进行安全审核,并生成依赖性漏洞的报告,如果可用,还会生成建议的修补程序。

  • 在命令行上,键入cd path/to/your-package-name并按Enter键导航到包目录。

解决EAUDITNOPJSON和EAUDITNOLOCK错误

npm audit需要包package.jsonpackage-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审计设置。