4

下面是我的代码。我不认为有任何问题。

我怎么能愚弄 codacy?如果我不能使用obj[key],那这到底是什么东西?我没有办法避免[]

handleClick = (e, titleProps) => {
     const { index } = titleProps
     const newVal = this.state.activeIndexObj[index]? false: true
     let activeIndexObj = {...this.state.activeIndexObj}
     activeIndexObj[index] = newVal
     // Generic Object Injection Sink (security/detect-object-injection)
4

2 回答 2

14

您只需要将索引解析为整数

activeIndexObj[parseInt(index)] = newVal

黑客可能会注入函数或原型链接,这就是出现此安全错误的原因。

于 2019-04-16T06:08:50.030 回答
1

@luca 评论中链接的问题(为什么用变量调用数组索引是不好的做法?)解释了使用变量访问数组索引的问题。这是一个安全问题。

如果您允许将未经验证的输入用作数组索引,您的应用程序可能会崩溃。即使您验证了索引,重构代码并跳过验证也只是时间问题。因此建议避免使用此类代码。一种推荐的解决方案是使用地图:https ://stackoverflow.com/a/44882765/4398050

如果您不想知道这个问题,可以忽略 codacy UI 中的问题:https: //support.codacy.com/hc/en-us/articles/207279979-Issues#2-remove-pattern

于 2018-08-07T08:45:37.413 回答