使用“npm audit”时如何检查高漏洞?

时间:2018-05-13 08:12:54

标签: node.js npm npm-audit

当您使用新的 npm 6 执行npm install时 我收到一条消息,告诉我我有一些漏洞

  

[!]发现75个漏洞[已审核4867个套餐]

     

严重性:66低| 4中等| 5高

     

运行npm audit了解更多详情

我运行了npm audit,但却得到了一个截断的漏洞列表。

如何仅检查漏洞列表?

由于

9 个答案:

答案 0 :(得分:12)

不是您正在寻找的答案,但它会做同样的事情: npm audit | grep -B 1 -A 10 High

答案 1 :(得分:4)

结果将包括一个具有较高或较高(严重)级别的漏洞:

npm audit --audit-level=high

来源:https://docs.npmjs.com/cli/audit#examples

答案 2 :(得分:3)

这个对我有用:

仅显示高位

npm audit | grep -E "(High)" -B3 -A10

同时显示关键问题和重要问题

npm audit | grep -E "(High | Critical)" -B3 -A10

请看issue讨论中提出该解决方案的地方。

答案 3 :(得分:2)

虽然不那么漂亮,但是您可以这样做:

npm audit --parseable | grep high

另一个不利之处是,任何包含"high"的软件包/问题元数据也将被打印。

答案 4 :(得分:2)

--audit-level=high 标志不会改变 npm 审计的输出。

我将此发送到 html 以用于报告目的,因此希望进一步清理它:

npm audit | grep -E "(High | Critical)" -B3 -A11 --color=always | grep -E '┌|│|├|└' --color=never

但这将失去标题,以及底部的“发现的漏洞”。我发现最简单的方法是运行几次 npm audit 并将我需要的位附加到文件中。

最后是这样的:

npm audit | grep '===' --color=never > temp.txt
npm audit | grep -E "(High | Critical)" -B3 -A11 --color=never | grep -E '┌|│|├|└' --color=never >> temp.txt
npm audit | grep -E "(found|scanned packages)" --color=never >> temp.txt
cat temp.txt

或者作为一个吸引人的衬里(笑),同时删除 temp.txt 文件:

npm audit | grep '=== npm audit' --color=never > temp.txt; npm audit | grep -E "(High | Critical)" -B3 -A11 --color=never | grep -E '┌|│|├|└' --color=never >> temp.txt; npm audit | grep -E "(found|scanned packages)" --color=never >> temp.txt; cat temp.txt; rm temp.txt;

这条线很丑,但在一堆不同的存储库中运行良好,前提是您只需要终端中的输出。

输出到文件时,npm 审核包含 ansi 颜色代码,无法关闭。这对我的报告来说是个问题! sed 可用于删除它们:

sed -i '' $'s,\x1b\\[[0-9;]*[a-zA-Z],,g' temp.txt

答案 5 :(得分:1)

如果您希望在Powershell中执行此操作,只需使用以下命令(改编自@stayingcool的答案):

仅显示高位

var goToLast = true;

$('.item').each(function() {

  var $this = $(this).data({
      position: $(this).index()
    }),
    $table = $this.closest('.container'),
    $input = $this;

  $input.bind('click', function(e) {
    $input.toggleClass('selected');

    var $first = $table.find('.item:first'),
      position;

    if ($(this).hasClass('selected')) {
      position = !goToLast ? $first.data('position') : $table.children().length - 1;
      $table.find('.item').not($(this)).removeClass('selected');
      if (position != 0) $first.insertAfter($table.find('.item').eq(position));
      $this.prependTo($table);
    } else if ($this.data('position') != 0) {
      position = $this.data('position');
      $this.insertAfter($table.find('.item').eq(position));
    }
  });

});

同时显示高和严重

<div class="container">
  <a href="#" class="item">1</a>
  <a href="#" class="item">3</a>
  <a href="#" class="item">A</a>
  <a href="#" class="item">B</a>
  <a href="#" class="item">C</a>
</div>

答案 6 :(得分:0)

此软件包可能是您要寻找的:

https://www.npmjs.com/package/audit-filter

它使您可以按咨询编号进行过滤,这比按级别进行过滤要好。

$ cat .nsprc
{
  "exceptions": [
    "https://npmjs.com/advisories/532",
    "https://npmjs.com/advisories/577"
   ]
}

将其与npm config for audit level结合使用,您真是太棒了。

答案 7 :(得分:0)

只需计算最高价:

npm audit | grep 'High' | wc -l | rev

答案 8 :(得分:0)

将此行放入您的审核脚本中:

"audit": "level=$(npm audit --parseable | grep -E 'high|critical' | wc -l | rev); [ $level == 0 ] && exit 0"

这段代码会检查 npm audit 的输出。如果没有高漏洞或严重漏洞,该进程将不会错误退出。