如何解决eslint“通用对象注入接收器”错误?

saz*_*saz 5 javascript json node.js eslint

我正在尝试读取 JSON 数组。每次我尝试通过像这样传递 JSON 对象键来读取数组/值时 -

json[key]
Run Code Online (Sandbox Code Playgroud)

它显示了一个 Eslint 错误-

[eslint] Generic Object Injection Sink (security/detect-object-injection)
Run Code Online (Sandbox Code Playgroud)

我理解这是一个安全警告,因为密钥可能不存在。但是我如何解决这个警告?有没有更简单的方法来读取 Json 对象。我的计划是将“密钥”传递给函数并根据密钥读取json。

Div*_*iya 12

您正在寻找 ES lint 错误修复:

这是它的语法

json [`${key}`]
Run Code Online (Sandbox Code Playgroud)

例子:

json [`${key}`]
Run Code Online (Sandbox Code Playgroud)

  • 您也可以只使用“eslint-disable-next-line security/detect-object-injection”,因为您正在编写代码以确保其安全。使用反引号(``${key}\``)转换它的语言黑客可能是 eslint 规则中的一个错误,应该修复。 (4认同)
  • 这可能会修复 ES Lint 错误,但这是一个安全问题。这对解决这个问题有帮助吗??? (3认同)

Exp*_*ter 5

这里有一个很好的答案。一般来说,这条规则是针对偏执狂的,而每个人都呼吁的文章是一个误导。因此,我想说,最好的答案是关闭此规则(如果可以的话)。

评论中的另一个答案是指eslint 贡献者的答案,即该规则非常容易误报,更适合人类审核代码库(警告级别),而不是在 CI 中给出错误。所以我想说你可以完全忽略这条规则或将其关闭。

如果您无法关闭或忽略它,您可以禁用带有注释的 eslint 行,指出它是误报,或者使用其他答案中提到的一些插值。

最后,为了消除任何疑虑,规则创建者的答案是:

“我是这条规则的原始作者 - 就上下文而言,它最初是作为手动代码审查的辅助工具编写的,与 VS Code 的 eslint 插件一起使用。我建议在其他用例中禁用它,因为它会太吵了。”