【发布时间】:2012-04-13 13:58:42
【问题描述】:
我想在应用程序中提供最终用户脚本(将在服务器端运行)。我一直在阅读,发现沙盒比我想象的要严重得多。
我真的不在乎 语言是什么。 LUA、Python、JavaScript,任何可读的东西我都可以。
在不受信任的脚本中运行函数、传递一些信息并获取更多信息有多难?我读过 JVM Security Manager is a no-go 并且 Python 几乎是不可沙盒化的,但我对该主题知之甚少,无法真正判断来源。
例如,我如何在 JS 中解释一个接受 JSON(例如来自 Java、Python 甚至 node.js)的函数,并取回返回的 JSON?
我想避免自己实现一个 pythonish i-just-know-it-will-suck 语言解释器。
【问题讨论】:
-
JavaScript 似乎是这里最安全的选择。它基本上就是为此目的而设计的。
-
对于 Python 沙盒,有 some advice。
-
@Lattyware:保护 CPython 的建议基本上没有用,恕我直言。他们推荐 chrooting(这是不安全的)和虚拟化(这是昂贵的)。
-
LUA 在嵌入方面取得了很大的成功,部分原因在于它对内存的要求较低,而且您可以轻松删除所有不需要的部分。
-
@NiklasB。这是真的,但显然 Jython 可能会起作用。我承认它可能不是最适合它的。
标签: javascript python lua sandbox