不安全的临时文件¶
ID: js/insecure-temporary-file
Kind: path-problem
Security severity: 7.0
Severity: warning
Precision: medium
Tags:
- external/cwe/cwe-377
- external/cwe/cwe-378
- security
Query suites:
- javascript-security-extended.qls
- javascript-security-and-quality.qls
在操作系统临时目录中创建的临时文件默认情况下对其他用户可见。在某些情况下,这会导致信息泄露,最糟糕的情况下会导致远程代码执行。
建议¶
使用经过良好测试的库,例如 tmp,来创建临时文件。这些库确保文件对其他用户不可访问,并且文件不存在。
示例¶
以下示例在操作系统的临时目录中创建一个临时文件。
const fs = require('fs');
const os = require('os');
const path = require('path');
const file = path.join(os.tmpdir(), "test-" + (new Date()).getTime() + ".txt");
fs.writeFileSync(file, "content");
上面创建的文件对其他用户可见,并且无法保证文件不存在。
以下示例使用 tmp 库安全地创建临时文件。
const fs = require('fs');
const tmp = require('tmp');
const file = tmp.fileSync().name;
fs.writeFileSync(file, "content");