2014-02-19 132 views
0

我正在用Java servlets編寫服務器應用程序,並且在某些時候,必須執行用戶上傳的Python腳本。是否有可能創建一個有限制的進程,比如只能訪問某個目錄(可能使用ProcessBuilder)?用Java執行未知的Python腳本

我已經看過了pysandbox,但是我不確定在執行未知的Python腳本時這是否足夠安全。

腳本所要做的就是使用某些庫處理給定的String,並使用print函數返回String。

我的方法是否正確或是否有更好的方法來執行未知腳本?

+0

沒有安全措施。 什麼都不會保護你。 –

回答

1

作爲我的回答,白名單和黑名單目前爲止只能走到盡頭,而且最容易被黑客破解。不要打擾這些安全風格。

儘可能安全地使用pypy-sandbox它會創建一個操作系統級別的沙箱,並嘗試隔離可能導致惡意執行的進程。

爲了實際安全,您可能需要更類似於以下模型的內容。

  • 使用SELinux的作爲主機火起來運行SELinux的
  • 禁用所有端口除了SSH虛擬機,並保證補丁是最新
  • 上傳代碼到非可執行文件目錄。
  • 的chroot和的ulimit所有的事情
  • 通過pypy的沙箱
  • 執行代碼破壞機器時執行完成

或者,也許我只是偏執。

+0

嗯,我認爲在安全問題上有點偏執不是壞事:) 你提到的步驟是關於我在找什麼,我會看看那些。我可能不會爲每個用戶運行一個虛擬機,因爲它會更安全,但對於我的場景來說有點超載。 – user2035039