Esiste un modo per specificare quale oggetto utilizzare per globale quando si richiama eval()
?Utilizzo di eval() con una globale personalizzata
(Non sto chiedendo come fare eval globale()).
Questo non funziona, ma questo illustra quello che vorrei:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
Il punto è che i veri attacchi globali non influenzato dalla dichiarazione di variabili implicite (cioè senza var parole chiave) nel codice eval() 'ed.
Per quanto riguarda eval.call(pseudoGlobal, "x=12")
o eval.apply(pseudoGlobal, ["x=12"])
, alcuni interpreti non lo consentono.
L'intento è creare un ambiente di esecuzione isolato/controllato/protetto all'interno di JavaScript. – gawi