我想知道是否可以对在浏览器中运行的 JavaScript 进行沙盒处理,以防止访问通常可用于在 HTML 页面中运行的 JavaScript 代码的功能。
例如,假设我想为最终用户提供一个 JavaScript API,让他们定义在“有趣的事件”发生时运行的事件处理程序,但我不希望这些用户访问窗口
对象。我能做到吗?
在最简单的情况下,假设我想阻止用户调用 alert
。我能想到的几种方法是:
- 全局重新定义
window.alert
。我认为这不是一种有效的方法,因为页面中运行的其他代码(即,不是由用户在其事件处理程序中编写的内容)可能需要使用alert
。 - 将事件处理代码发送到服务器进行处理。我不确定将代码发送到服务器进行处理是正确的方法,因为事件处理程序需要在页面的上下文中运行。
也许服务器处理用户定义的函数然后生成回调以在客户端上执行的解决方案可行吗?即使这种方法有效,是否有更好的方法来解决这个问题?
最佳答案
Google Caja是一个源到源转换器,“允许您将不受信任的第三方 HTML 和 JavaScript 内嵌在您的页面中,并且仍然是安全的。”
关于javascript - 是否可以对在浏览器中运行的 JavaScript 进行沙箱处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/195149/