我想在应用程序中提供终端用户脚本(运行服务器端)。我一直在阅读,发现沙拳比我想象的要麻烦得多。
我不关心语言是什么。LUA,Python,JavaScript,我对任何可读的东西都没意见。
在不受信任的脚本中运行函数、传递一些信息并获得更多信息有多困难?我读过JVM安全管理器(),它几乎是不可用的,但我对这个主题知之甚少,无法真正判断来源。
例如,我如何在JS中解释一个接受JSON (例如来自Java或Python,甚至是node.js)的函数,并返回返回的JSON?
我想避免自己实现一个pythonish的语言解释器。
发布于 2012-04-13 14:34:46
Lua有良好的沙箱能力,而且干净简单。
它具有可以在特定环境中运行代码的塞芬夫()函数。不受信任的代码只能访问特定环境中的内容。
对于C函数(如string.rep ),可以通过用Lua函数替换它们或为lua_newstate提供自定义内存分配器来防止内存过度消耗。
此外,如果您决定要将Lua用于可信代码,并将其与不受信任的代码进行接口,则可以使用协同线和debug.sethook来控制CPU的使用。
Lua有一个简单的示例沙箱。
源代码 of lua现场演示可能也会引起人们的兴趣。
发布于 2012-04-15 00:53:13
Tcl有一个非常强大的sanbox模型,可以说是用于最终用户脚本的更好的语言之一。您可以在安全解释器手册页面上阅读更多有关它的信息。
https://stackoverflow.com/questions/10142236
复制相似问题