在Java中执行未知的Python脚本

用户名

我正在使用Java Servlet编写服务器应用程序,有时必须执行用户上传的Python脚本。是否可以创建一个流程,使其具有诸如只能访问某个目录(可能使用ProcessBuilder)之类的限制?

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

脚本要做的就是使用某些库处理给定的String并使用print函数返回String。

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

雅各布·鲍耶(Jakob Bowyer)

作为我的回答的前言,仅将白名单和黑名单进行得如此之遥,并被最有决心的黑客证明很容易破解。不要为这些安全性而烦恼。

使用pypy-sandbox差不多安全,它会创建一个OS级别的沙箱,并尝试隔离可能导致讨厌执行的进程。

为了实现真正的安全性,您可能想要更多类似以下模型的内容。

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

也许我只是偏执。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章