CodeQL 文档

不必要的 cat 进程使用

ID: js/unnecessary-use-of-cat
Kind: problem
Security severity: 6.3
Severity: error
Precision: high
Tags:
   - correctness
   - security
   - maintainability
   - external/cwe/cwe-078
Query suites:
   - javascript-code-scanning.qls
   - javascript-security-extended.qls
   - javascript-security-and-quality.qls

单击以在 CodeQL 代码库中查看查询

使用 Unix 命令 cat 只读文件是一种不必要的复杂方法,可以更简单、更安全地使用 Node.js fs.readFile API 来实现。

cat 用于简单的文件读取会导致代码不可移植、效率低下、复杂,并可能导致难以察觉的错误,甚至安全漏洞。

建议

使用 fs.readFilefs.readFileSync 从文件系统读取文件。

示例

以下示例显示了使用 cat 读取文件的代码

var child_process = require('child_process');

module.exports = function (name) {
    return child_process.execSync("cat " + name).toString();
};

如果输入 name 包含特殊字符(包括空格),则示例中的代码将失效。此外,它在 Windows 上不起作用,如果输入是用户控制的,则可能会发生命令注入攻击。

应使用 fs.readFile API 来避免这些潜在问题

var fs = require('fs');

module.exports = function (name) {
    return fs.readFileSync(name).toString();
};

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私