下面是我的代码。我认为没有问题。
我该如何愚弄编纂?如果我不能使用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)
答案 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
黑客可能会注入功能或原型链,这就是导致此安全错误的原因。