如何修复密码警报“通用对象注入接收器”

时间:2018-08-06 21:05:06

标签: javascript 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)

2 个答案:

答案 0 :(得分:0)

@luca(Why is it bad pratice calling an array index with a variable?)在评论中链接的问题解释了使用变量访问数组索引的问题。这是一个安全问题。

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

如果您不想知道此问题,可以在编码界面中忽略该问题:https://support.codacy.com/hc/en-us/articles/207279979-Issues#2-remove-pattern

答案 1 :(得分:0)

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

activeIndexObj[parseInt(index)] = newVal

黑客可能会注入功能或原型链,这就是导致此安全错误的原因。