有没有办法限制在嵌入式解释器下运行的 python 脚本的能力?具体来说,我希望阻止脚本执行以下操作:
- 导入 python 扩展模块(即 .pyd 模块),应用程序特别允许的除外。
- 以任何方式操作进程(即启动新进程或终止应用程序)。
- 任何类型的网络。
- 操作文件系统(例如创建、修改和删除文件)。
有没有办法限制在嵌入式解释器下运行的 python 脚本的能力?具体来说,我希望阻止脚本执行以下操作:
不,没有简单的方法可以在 CPython 上阻止这些事情。您的选择是:
也许这会有所帮助。您提供了一个关于如何使用 ast 的示例。
你想要什么运行Python 版本的App Engine的 Google 的Unladen Swallow项目。
模块受到严格限制,ctypes
不允许使用,套接字与某些策略或其他匹配,换句话说,您将获得 Python 的沙盒版本,与他们的 Java 产品一致。
我想指出,这使系统几乎毫无用处。对任何比另一个 [App Engine] 应用程序更酷的东西都没有用。忘记猴子补丁系统模块,甚至限制访问自己的堆栈。完全不像动态的。
OT:游戏通常会嵌入 LUA 来编写脚本,也许你应该检查一下。