javascript - 是否可以对在浏览器中运行的 JavaScript 进行沙箱处理?

标签 javascript browser sandbox

我想知道是否可以对在浏览器中运行的 JavaScript 进行沙盒处理,以防止访问通常可用于在 HTML 页面中运行的 JavaScript 代码的功能。

例如,假设我想为最终用户提供一个 JavaScript API,让他们定义在“有趣的事件”发生时运行的事件处理程序,但我不希望这些用户访问窗口 对象。我能做到吗?

在最简单的情况下,假设我想阻止用户调用 alert。我能想到的几种方法是:

  • 全局重新定义 window.alert。我认为这不是一种有效的方法,因为页面中运行的其他代码(即,不是由用户在其事件处理程序中编写的内容)可能需要使用 alert
  • 将事件处理代码发送到服务器进行处理。我不确定将代码发送到服务器进行处理是正确的方法,因为事件处理程序需要在页面的上下文中运行。

也许服务器处理用户定义的函数然后生成回调以在客户端上执行的解决方案可行吗?即使这种方法有效,是否有更好的方法来解决这个问题?

最佳答案

Google Caja是一个源到源转换器,“允许您将不受信任的第三方 HTML 和 JavaScript 内嵌在您的页面中,并且仍然是安全的。”

关于javascript - 是否可以对在浏览器中运行的 JavaScript 进行沙箱处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/195149/

相关文章:

javascript - Google Maps Javascript API v3 map 标签和多边形

javascript - 如何在 Javascript 中添加忽略父元素的左边距和填充的子元素

sandbox - 尝试从 Flatpak 沙箱中的 Blender 访问 USB 驱动器

javascript - 将其作为参数传递给 angularjs 函数

javascript - 如何设置图片的原始大小不超过父容器的宽度

delphi - 如何在网页中按下这样的按钮?

javascript - javascript "resizeTo"函数在 Chrome 和 Opera 中不起作用

javascript - Safari AJAX 调用在隐身模式下丢失 session /cookie?

java - Nashorn 的沙盒 Java 脚本替代品

c - 如何使用 Xcode 编译 C 程序,以便在沙箱中使用二进制文件?