【发布时间】:2017-12-06 13:02:52
【问题描述】:
我目前正在用 Javascript 开发一个小游戏,我正在使用 Codacy 来审查我的代码并帮助我清理它。
最常见的错误之一是 Generic Object Injection Sink (security/detect-object-injection)。
当我尝试使用变量访问数组中的值时会发生这种情况。就像在这个例子中一样:
function getValString(value)
{
var values = ["Misérable", "Acceptable", "Excellente", "Divine"];
return values[value];
}
function 用于在屏幕上显示项目的值字符串。它接收一个“值”,可以是 0、1、2 或 3,并返回值的字符串。
现在这是我的问题:
Codacy 告诉我应该禁止使用 var[var],因为它会导致安全问题,而且由于我对 Javascript 还比较陌生,所以我想知道为什么以及在这种情况下有哪些好的做法。
【问题讨论】:
-
代码看起来不错。但是,在这里使用开关或查找表会更合适...
-
不,只是一张价值图:koefficient。还有一个班轮......
-
两者都没有回答 OP 的问题 - 为什么将数组索引查找报告为不良安全做法,这是否有效?
-
对我来说似乎是因为查找依赖于外部函数参数,理论上可以由客户端操作,而客户端本身可能会导致任何不好的东西,如缓冲区溢出或任何被利用的东西。是否没有 codacity 的文档部分来解释这个问题?
-
我认为 Codacy 应该改进检查,因为只有当用作索引的变量是从外部接收的(例如用户输入或参数)而不是当它是局部变量(例如 for/while 循环计数器)。
标签: javascript arrays optimization codacy