#Context—如果您想直奔主题,请跳过
我一直在用Python(Bottle/gevent/MongoDB)构建一个相当复杂的web应用程序。它是一个RSVP系统,它允许多个独立的前端实例使用注册表单als,以及具有细粒度用户权限的后端访问(这些用户是我们的客户机)。我现在需要实现一个灵活的map reduce引擎来收集注册数据的统计信息。由于收集的数据因实例而异,因此不可能采用一刀切的解决方案。我也希望为我们更倾向于技术的客户保持开放。
#上下文结束
所以我需要执行通过web界面输入的任意字符串代码(某种特殊的插件语言并不重要)。我已经了解到,对Python进行适当的沙盒实际上是不可能的,所以这是没有选择的。在
到目前为止,我已经研究了Lua,发现了Lupa、疯狂的Python和Lupy,但是它们都允许访问Python运行时的部分内容。在
还有PyExecJS及其各种运行时(V8、Node、SpiderMonkey),但我不知道它是否会带来任何安全风险。在
问题:
1有人知道另一个(更合适)的选择吗?
2对于那些熟悉Lua绑定的人来说:有没有可能让它们完全安全而无需太多麻烦?
三。对于那些熟悉PyExecJS的人来说:它有多安全?另外,我应该期望什么样的性能,比如说,调用一个短映射函数1000次,然后在1000项列表上迭代?在
Sneklang是Python的严格子集,可以在您提供的范围内安全地进行计算。在
它受作用域大小和节点求值步骤数的限制,并可防止无限循环、堆栈溢出和过度内存使用。在
还有一个在线沙盒:https://sneklang.functup.com
我做这个项目是因为我有同样的要求。在
以下是运行不受信任代码的几种方法:
相关问题 更多 >
编程相关推荐