用Java执行未知的Python脚本

时间:2014-02-19 10:28:28

标签: java python processbuilder

我正在使用Java servlet编写服务器应用程序,并且在某些时候,必须执行由用户上载的Python脚本。是否有可能创建一个具有限制的流程,例如只能访问某个目录(可能使用ProcessBuilder)?

我已经看过pysandbox了,但是我不确定在执行一个未知的Python脚本时这是否足够安全。

所有脚本必须做的是使用某些库处理给定的String并使用print函数返回一个String。

我的方法是否正确或是否有更好的方法来执行未知脚本?

1 个答案:

答案 0 :(得分:1)

作为我的回答,白名单和黑名单只是到目前为止,并且被最坚定的黑客证明容易被打破。不要担心这些安全风格。

关于尽可能安全,使用pypy-sandbox它会创建一个操作系统级别的沙箱,并尝试隔离可能导致恶意执行的进程。

为了真正的安全性,你可能想要更像这样的模型。

  • 使用SELinux作为主机启动运行SELinux的虚拟机
  • 禁用除SSH以外的所有端口,并确保修补程序是最新的
  • 将代码上传到不可执行的目录。
  • Chroot和ulimit所有的东西
  • 通过pypy-sandbox执行代码
  • 执行完成时销毁机器

或许我只是偏执狂。