Usando eval () em ambiente isolado

9

É possível usar eval() para avaliar o código JavaScript e ter certeza de que esse código não terá acesso a determinados objetos?

Exemplo:

(function(window, location){ eval('console.log(window, location)'); })()

O código acima não parece ter acesso direto por referência ao objeto window porque é undefined nesse escopo. No entanto, se outro objeto existir globalmente e contiver uma referência a window , ele será acessível.

Se eu adicionar a window, location qualquer outro objeto ou variável que possa conter uma referência a window , o código avaliado será capaz de fazer referência ao objeto window ?

Estou tentando criar uma plataforma em que os aplicativos do usuário possam ser enviados com arquivos js e o acesso a APIs específicas seja fornecido na forma de permissões.

    
por Kosmas Papadatos 26.05.2015 в 16:28
fonte

1 resposta

2

Em JavaScript, qualquer função chamada globalmente (ou seja, não em um objeto) terá seu parâmetro this definido para o objeto global (em um navegador que seja a janela). Então, este trecho:

(function(window, lovation) { eval('(function () { console.log(this) })()'); })()

imprime o objeto da janela atual

    
por Will Smith 26.05.2015 / 16:36
fonte