如何在Linux上使用Npm或者Yarn安全安装软件包
时间:2020-03-21 11:44:55 来源:igfitidea点击:
在Linux中有一个名为“ npq”的程序,可用于使用Npm或者Yarn程序包管理器安全地安装程序包。
在安装之前,npq将审核我们要安装的软件包。
如果存在任何已知漏洞,它将显示警告,以便我们可以安全地跳过安装。
Npq将执行以下步骤来验证包装是否安全。
- 它将检查Snyk漏洞数据库,以确保该软件包是否存在任何漏洞。
如果存在任何已知漏洞,它将显示警告。
- 检查包装的寿命。如果软件包的使用期限少于22天,则会显示警告消息。
- 检查软件包下载计数。如果上个月软件包的下载数量少于20,则会显示警告。
- 检查软件包是否有自述文件。如果没有自述文件,它将显示警告。
- 检查程序包中是否包含任何前脚本或者后脚本。这些脚本可能是恶意的,因此将显示警告消息。
如果我们没有看到任何警告,则说明该包装可能是安全的。
请注意,我说过的包装可能是安全的。
但是没有保证的安全性。
仍然可能存在一个恶意或者易受攻击的程序包,该程序包没有在Synk数据库中发布任何披露,并且通过了npq的检查。
完成所有测试后,npq会将实际软件包的安装过程移交给Npm或者Yarn软件包管理器。
Npm是默认设置。
请注意,Npq不会阻止我们安装软件包。
它只会审核程序包中可能存在的安全问题,并在存在任何已知漏洞的情况下显示警告。
由我们决定是忽略安装还是继续自担风险。
安装Npq
确保已在Linux机器上安装了Nodejs。
安装Nodejs之后,运行以下命令来安装Npq:
$npm install -g npq
上面的命令将在路径中放置两个二进制文件,即npq和npq-hero。
在Linux上使用Npm或者Yarn安全地安装软件包
要审核和安装软件包(例如tldr),只需运行:
$npq install tldr
输出示例:
✔ Checking package maturity ✖ Identifying package author... ✔ Checking package download popularity ✔ Checking availability of a README ✔ Identifying package repository... ✔ Checking package for pre/post install scripts ✖ Checking for known vulnerabilities Detected possible issues with the following packages: [tldr] - the package description has no e-mail associated with author(s). Proceed with care. [*] - Unable to query for known vulnerabilities. Install snyk and authenticate or provide a SNYK_TOKEN env variable (https://snyk.io) ? Would you like to continue installing package(s)? (y/N)
如我们在上面的输出中看到的,有三个警告:
- Npq无法识别tldr软件包的作者,
- 软件包的描述中没有电子邮件地址,
- 我尚未设置Snyk数据库并通过身份验证。要安装Synk CLI并使用Snyk数据库进行身份验证,请参考此链接。
如果我们不关心警告并相信它是安全的,则只需键入Y即可继续安装该软件包。
建立别名
Npq只是在实际安装npm程序包之前检查其已知漏洞的一个前置工具。
如果在日常工作中经常使用它,只需创建一个别名,如下所示。
$alias npm='npq-hero'
从现在开始,我们可以简单地审核一个npm软件包并使用以下命令安装它:
$npm install package_name
变更预设套件管理员
就像我已经提到的那样,Npq将在审核安装程序后默认将安装过程移交给Npm程序包管理器。
如果要将Yarn设置为默认程序包管理器,请指定一个环境变量:
NPQ_PKG_MGR=yarn
要使用yarn作为包管理器创建别名,请执行以下操作:
alias yarn="NPQ_PKG_MGR=yarn npq-hero"