我正在用Java servlets编写服务器应用程序,并且在某些时候,必须执行用户上传的Python脚本。是否有可能创建一个有限制的进程,比如只能访问某个目录(可能使用ProcessBuilder)?用Java执行未知的Python脚本
我已经看过了pysandbox,但是我不确定在执行未知的Python脚本时这是否足够安全。
脚本所要做的就是使用某些库处理给定的String,并使用print函数返回String。
我的方法是否正确或是否有更好的方法来执行未知脚本?
我正在用Java servlets编写服务器应用程序,并且在某些时候,必须执行用户上传的Python脚本。是否有可能创建一个有限制的进程,比如只能访问某个目录(可能使用ProcessBuilder)?用Java执行未知的Python脚本
我已经看过了pysandbox,但是我不确定在执行未知的Python脚本时这是否足够安全。
脚本所要做的就是使用某些库处理给定的String,并使用print函数返回String。
我的方法是否正确或是否有更好的方法来执行未知脚本?
作为我的回答,白名单和黑名单目前为止只能走到尽头,而且最容易被黑客破解。不要打扰这些安全风格。
尽可能安全地使用pypy-sandbox它会创建一个操作系统级别的沙箱,并尝试隔离可能导致恶意执行的进程。
为了实际安全,您可能需要更类似于以下模型的内容。
或者,也许我只是偏执。
嗯,我认为在安全问题上有点偏执不是坏事:) 你提到的步骤是关于我在找什么,我会看看那些。我可能不会为每个用户运行一个虚拟机,因为它会更安全,但对于我的场景来说有点超载。 – user2035039
没有安全措施。 什么都不会保护你。 –