下面是我的代码。我不认为有任何问题。
我怎么能骗过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)
Run Code Online (Sandbox Code Playgroud)
小智 12
您只需要将索引解析为整数
activeIndexObj[parseInt(index)] = newVal
Run Code Online (Sandbox Code Playgroud)
黑客可能会注入函数或原型链,这就是出现此安全错误的原因。
@luca 评论中链接的问题(Why is it bad pratice Calling an array Index with a Variable?)解释了使用变量访问数组索引的问题。这是一个安全问题。
如果您允许将未经验证的输入用作数组索引,您的应用程序可能会崩溃。即使您验证了索引,重构代码并跳过验证也只是时间问题。因此建议避免此类代码。一种推荐的解决方案是使用地图:/sf/answers/3141793581/
如果您不想了解此问题,可以忽略 codacy UI 中的问题:https ://support.codacy.com/hc/en-us/articles/207279979-Issues#2-remove-pattern
| 归档时间: |
|
| 查看次数: |
12251 次 |
| 最近记录: |