【问题标题】:Codacy "Found fs.functionName with non literal argument at index 0" errorCodacy“在索引 0 处找到带有非文字参数的 fs.functionName”错误
【发布时间】:2020-10-30 15:01:12
【问题描述】:

错误消息和我的代码:

在索引 0 处找到带有非文字参数的 fs.existsSync

if (!fs.existsSync(dbFolder)){

在索引 0 处找到带有非文字参数的 fs.mkdirSync

fs.mkdirSync(dbFolder);

在索引 0 处找到带有非文字参数的 fs.readFileSync

const content = JSON.parse(fs.readFileSync(`${this.dbFolder}/${this.dbName}.json`, "utf8"));

在索引 0 处找到带有非文字参数的 fs.writeFileSync

fs.writeFileSync(`${dbFolder}/${dbName}.json`, "{}");

【问题讨论】:

  • 你的问题到底是什么?

标签: javascript node.js fs codacy


【解决方案1】:

如果您想知道问题出在哪里,它在错误消息中。在 fs.readFileSync 第一个参数上使用非文字(变量)是不好的做法。

见https://github.com/nodesecurity/eslint-plugin-security#detect-non-literal-fs-filename

【讨论】:

  • 指向 owasp 的链接在链接中不起作用。因此,如果您知道我们如何解决此问题,请提供更多信息。
  • 它对我有用:owasp.org/www-community/attacks/Path_Traversal。无论如何,答案说明了问题:您使用的是变量而不是字符串文字。问题是变量可以更改(是用户输入吗?)并允许路径遍历攻击
  • eslint 是否给出误报?可以说,如果我将 path.join 参数传递给 fs readFile 或 writeFile 它会给出错误。但我不能使用相对 url,所以有什么选择吗?
猜你喜欢
  • 2017-04-16
  • 2022-10-18
  • 2021-11-27
  • 2023-04-10
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多