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

时间:2018-07-10 20:31:09

标签: javascript json node.js eslint

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

json[key]

它显示一个Eslint错误-

[eslint] Generic Object Injection Sink (security/detect-object-injection)

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

2 个答案:

答案 0 :(得分:1)

您正在搜索ES皮棉错误修复程序:

这是它的语法

json [`${key}`]

示例:

const obj = { 
    eventName: 'Music event', 
    landingPic: 'landing.jpg',
    eventPic0: 'pic0.jpg',
    eventPic1: 'pic1.jpg',
    eventPic2: 'pic2.jpg',
    eventPic3: 'pic3.jpg',
    artist: 'Elie'
};

// array of keys which need to  be read
const arrayOfKey = ['landingPic', 'eventPic0', 'eventPic1',  'eventPic2',  'eventPic3'];

// let's read the value by a key in array
arrayOfKey.forEach( key => {
    const value = obj[`${key}`];
    console.log(value);
});

答案 1 :(得分:0)

它试图说的是使用这种表示法:

  • 您甚至可以修改被认为很危险的对象的原型属性
  • 通过能够修改所有内容,您还可以修改构造函数(方法/函数),以便可以对其进行注入然后加以利用。

此处以分析方式描述了该主题,并提供了一个简单示例:

https://web.archive.org/web/20150430062816/https://blog.liftsecurity.io/2015/01/15/the-dangers-of-square-bracket-notation