允许在不影响安全性的情况下执行用户提交的JS


Allowing user submitted JS to be executed without comprimising security

很抱歉,我知道这有点模糊。

我正在开发一个网站,用户可以提交自己的应用程序在网站上执行。这些应用程序将在javascript中执行,网站上的任何人都可以在浏览器中运行。问题是我需要限制哪些方面的javascript用户能够访问他们的应用程序。我只希望他们能做的是:

  • 创建和操作自己的变量和函数
  • 调用自己编写的预定义JS API。

有人有什么想法吗?我现在在考虑两种选择。要么他们用JS写,我确保里面没有讨厌的代码,要么他们用python之类的语言写,我反复修改,把它变成安全的javascript。

我所有的服务器端东西是在PHP,所以我希望操纵用户提交的代码作为一个PHP字符串。

我再次道歉,我不是让别人为我写代码,我知道这个网站是为了解决特定的代码错误,但我不知道还有什么办法来解决这个问题

我看到的唯一解决方案是创建一个沙盒环境。试试这个(我从来没用过)。如果这不起作用,你应该考虑定义一种元语言,这样用户就可以用这种元语言提交脚本,然后把它们"编译"成javascript。任何其他选项都是危险的,因为您正在将脚本上传到服务器。

最后我使用的方法是Caja,因为这允许我在页面中执行JavaScript编写的代码并限制它。它有几种配置,但它最适合我完全拒绝DOM访问,并允许它访问我自己的域来抓取图像,但没有其他网络访问(这是通过URI策略实现的)。

非常感谢Blender的推荐,它非常有帮助!