【问题标题】:Executing unknown Python script in Java在 Java 中执行未知的 Python 脚本
【发布时间】:2014-02-19 10:28:28
【问题描述】:

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

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

脚本所要做的就是使用某些库处理给定的字符串并使用打印函数返回一个字符串。

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

【问题讨论】:

  • 没有安全措施。没有什么能保护你。

标签: java python processbuilder


【解决方案1】:

作为对我的回答的转发,白名单和黑名单只是到目前为止,并且证明很容易被最坚定的黑客破坏。不要为这些安全风格而烦恼。

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

为了真正的安全性,您可能需要更多类似以下模型的东西。

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

或者我只是偏执。

【讨论】:

  • 嗯,我认为在安全问题上有点偏执并不是一件坏事:) 你提到的步骤是关于我正在寻找的,我会看看那些。我可能不会为每个用户运行虚拟机,因为它会更安全,但对于我的场景来说有点过载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多