我刚刚在服务器中安装了 nodejs,并且基本npm install
显示了很多这样的消息:
$ npm install
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN deprecated graceful-fs@2.0.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN prefer global node-gyp@3.4.0 should be installed with -g
请注意出现在右侧的消息:
npm WARN ... or higher to avoid a RegExp DoS issue
^^^^^^^^^^^^^^^^^^^^^^^^^^^
在我的本地服务器中,我已经在使用 minimatch 3.0.3。但是,由于服务器没有使用最新版本的节点,这对我来说是新的并开始调查:
此问题已在npm 的 github中报告,并在其他问题中提及。一般来说,它可以通过将版本升级minimatch
到至少 3.0.2 来解决。
但是,我想知道这个 RegExp DoS 问题是什么?是否有任何特定的正则表达式允许通过 minimatch 进行 DoS 攻击?我无法想象这是如何发生的并且不想重现它,但我找不到更多文档,并且minimatch 的 Github 问题列表没有任何痕迹。
从发布页面中,我看到了 3.0.2 发布的唯一提交,其中基本上封装了正则表达式语法(我对 JavaScript 不够熟悉,无法将其全部跟踪到最后一个微小的细节)。