分配给对象注入接收器的变量(安全/检测对象注入)

信息安全 javascript 对象注入
2021-08-14 09:43:21

我正在 ESLint 上测试我的代码。它说:

分配给对象注入接收器的变量(安全/检测对象注入)。

不过,我没有使用外部资源将其分配给我的变量。var a = newArray[c];线路真的有问题吗?

function shuffleTitleImagesArray(originArr) {
        var newArray = originArr.slice(0); //copy of old array
        for (var c = 0; c < newArray.length; c++) {
            var b = Math.floor(Math.random() * (c + 1));
            var a = newArray[c];
            newArray[c] = newArray[b];
            newArray[b] = a;
        }
        return newArray;
    }
2个回答

不,您的代码是安全的。这里的问题是用户是否可以控制方括号内的内容(c在这种情况下)。然后攻击者可以提供一些意想不到的东西,比如原型链上的方法名称。这反过来又可能引发各种不可预测的行为,并可能带来安全隐患。

但在你的情况下c将永远是一个数字,所以你很好。

您只需要将 c 解析为整数

var a = newArray[parseInt(d)];

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