首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于安全审核

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

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

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

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

  1. 在命令行上,键入cd path/to/your-package-name并按Enter键导航到包目录。
  2. 确保您的包中包含package.jsonpackage-lock.json文件。
  3. 键入npm audit,然后按Enter键
  4. 查看审核报告并运行推荐的命令,或在需要时进一步调查。

解决EAUDITNOPJSONEAUDITNOLOCK错误

npm audit需要包package.jsonpackage-lock.json文件。

  • 如果出现EAUDITNOPJSON错误,请package.json按照“ 使用package.json ”中的步骤创建文件。
  • 如果出现EAUDITNOLOCK错误,请确保您的包有package.json文件,然后通过运行创建包锁文件npm i --package-lock-only

运行npm audit将生成安全漏洞报告,其中包含受影响的程序包名称,漏洞严重性和描述,路径以及其他信息,以及应用修补程序以解决漏洞的命令(如果有)。有关审计报告中字段的详细信息,请参阅“ 关于审计报告 ”

建议更新时发现安全漏洞

如果发现安全漏洞并且有可用更新,您可以:

  • 运行npm audit fix子命令以自动为易受攻击的依赖项安装兼容的更新。
  • 分别运行推荐的命令以安装易受攻击的依赖项的更新。(某些更新可能是破坏性更改;有关详细信息,请参阅“ SEMVER警告 ”。)

SEMVER警告

如果建议的操作是潜在的突破性更改(语义版本主要更改),则会出现SEMVER WARNING。如果包含漏洞的软件包更改了其API,则可能需要对软件包的代码进行其他更改。

发现需要手动审查的安全漏洞

如果发现安全漏洞,但没有可用的修补程序,审计报告将提供有关漏洞的信息,以便您进一步调查。

要解决此漏洞,您可以

  • 检查缓解因素
  • 如果存在修复,则更新相关包
  • 修复漏洞
  • 打开包或从属包问题跟踪器中的问题

检查缓解因素

查看“更多信息”字段中的安全公告,了解可能允许您在有限情况下继续使用包含漏洞的缓解因素。例如,只有在特定操作系统上使用代码或调用特定函数时,漏洞才可能存在。

如果存在修复,则更新相关包

如果存在修复程序,但依赖于具有漏洞的程序包的程序包尚未更新以包含固定版本,则可能需要在依赖程序包存储库上打开pull或merge请求以使用固定版本。

  1. 要查找必须更新的软件包,请在“路径”字段中查看包含漏洞的软件包的位置,然后检查依赖于该软件包的软件包。例如,如果是漏洞的路径@package-name > dependent-package > package-with-vulnerability,则需要更新dependent-package
  2. 在npm公共注册表上,找到依赖包并导航到其存储库。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
  3. 在依赖包存储库中,打开拉取或合并请求以将易受攻击的包的版本更新为具有修复的版本。
  4. 一旦合并了pull或merge请求并且已在npm公共注册表中更新了包,请使用更新包的副本npm update

修复漏洞

如果修复程序不存在,您可能需要在程序包存储库上的pull或merge请求中建议更改以解决程序包维护者的漏洞。

  1. 检查“路径”字段以获取漏洞的位置。
  2. 在npm公共注册表中,找到包含此漏洞的软件包。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
  3. 在包存储库中,打开pull或merge请求以在包存储库上进行修复。
  4. 合并修复程序并在npm公共注册表中更新程序包后,请更新依赖于修复程序包的程序包副本。

打开包或从属包问题跟踪器中的问题

如果您不想自行修复漏洞或更新相关软件包,请在软件包或相关软件包问题跟踪器中打开一个问题。

  1. 在npm公共注册表中,找到包含漏洞的程序包或需要更新的依赖程序包。有关查找包的详细信息,请参阅“ 如何查找和选择包 ”。
  2. 在程序包或从属程序包问题跟踪程序中,打开问题并包括审计报告中的信息,包括“更多信息”字段中的漏洞报告。

未发现任何安全漏洞

如果未发现任何安全漏洞,则表示在包依赖关系树中找不到具有已知漏洞的软件包。由于咨询数据库可以随时更新,我们建议您定期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审计设置。

扫码关注腾讯云开发者

领取腾讯云代金券