javascript - 在隔离环境中使用 eval()

标签 javascript

是否可以使用 eval()评估 JavaScript 代码并确保该代码无法访问某些对象?

示例:

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

上面的代码似乎没有通过引用直接访问 window对象,因为它是 undefined在那个范围内。但是,如果另一个对象全局存在并且它包含对 window 的引用, 它将是可访问的。

如果我添加到 window, location可能包含对 window 的引用的任何其他对象或变量, 评估的代码是否能够引用 window目的?

我正在尝试创建一个平台,用户应用程序可以通过 js 文件上传,并以权限的形式提供对特定 API 的访问。

最佳答案

在 JavaScript 中,任何全局调用的函数(即不在对象上)都将其 this 参数设置为全局对象(在窗口浏览器中)。所以这个片段:

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

打印出当前窗口对象

关于javascript - 在隔离环境中使用 eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461423/

相关文章:

javascript - 实时 Web 应用程序的短轮询与长轮询?

javascript - 大数据集导致自定义搜索框滞后于 jquery 数据表

javascript - 修改 SVG.js 创建的父 SVG 的高度

javascript - jQuery - 悬停事件上显示的非嵌套/非后代同级导航

javascript - 如何将 json 中的自动填充功能与动态创建的输入一起使用?

javascript - 通过单击一个图像来显示 Colorbox 多图像幻灯片

javascript - 在 CKEditor 5 中呈现 HTML 页面

javascript - Node Handlebars 在渲染 View 之前添加额外的文本 Node

javascript - 解决Graphql的异步函数无法返回通过具有rdf数据的Stardog服务器查询的数据

php - php中如何在不刷新页面的情况下获取cookie?