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

时间:2014-05-26 00:10:20

标签: javascript php security

道歉,因为这是相当含糊的,我知道。

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

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

有没有人有任何想法?我现在正在考虑两种选择。他们要么用JS编写它,我确保那里没有讨厌的代码,或者用python这样的语言编写代码,然后我将它转换成安全的javascript。

我所有的服务器端都是PHP,因此我希望将用户提交的代码作为PHP字符串进行操作。

再次,我道歉,我不是要求别人为我编写代码,我知道这个网站是针对特定的代码错误但我不知道该怎么处理这个问题。

2 个答案:

答案 0 :(得分:1)

我看到的唯一解决方案是创建一个沙盒环境。试试this(我从未使用过它)。如果这不起作用,您应该考虑定义一个元语言,以便用户在这个元语言中提交脚本,然后将它们“编译”为javascript。任何其他选项都很危险,因为您要将脚本上传到服务器。

答案 1 :(得分:0)

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

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