it-swarm.com.de

Variable, die dem Objektinjektionsbecken zugewiesen ist (Sicherheits- / Erkennungsobjektinjektion)

Ich teste meinen Code auf ESLint. Es sagt:

Variable, die dem Objektinjektionsbecken zugewiesen ist (Sicherheits-/Erkennungsobjektinjektion).

Ich verwende jedoch keine äußere Ressource, um sie meiner Variablen zuzuweisen. Gibt es wirklich ein Problem in der var a = newArray[c]; Linie?

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;
    }
9
Andy

Nein, Ihr Code ist sicher. Das Problem hierbei wäre, wenn der Benutzer steuern könnte, was sich in den eckigen Klammern befindet (in diesem Fall c). Ein Angreifer könnte dann etwas Unerwartetes bereitstellen, beispielsweise den Namen einer Methode in der Prototypenkette. Dies könnte wiederum alle Arten von unvorhersehbarem Verhalten auslösen, möglicherweise mit Auswirkungen auf die Sicherheit.

Aber in Ihrem Fall wird c immer eine Zahl sein, also geht es Ihnen gut.

3
Anders

Sie müssen nur c in eine Ganzzahl analysieren

var a = newArray[parseInt(d)];

es besteht die Möglichkeit, dass Hacker Funktionen oder Prototypen verketten, weshalb dieser Sicherheitsfehler auftritt.

1
viveksharma