不必要的 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
使用 Unix 命令 cat
只读文件是一种不必要的复杂方法,可以更简单、更安全地使用 Node.js fs.readFile
API 来实现。
将 cat
用于简单的文件读取会导致代码不可移植、效率低下、复杂,并可能导致难以察觉的错误,甚至安全漏洞。
建议¶
使用 fs.readFile
或 fs.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();
};