4
我正在寫一個autograder web應用程序,它接受來自用戶的程序作爲輸入。有什麼方法可以保護我的Web服務器免受惡意程序輸入的干擾?如何安全地運行不可信的Java應用程序?
目前只支持Java程序輸入。我正在考慮禁止訪問某些軟件包/類,但我不知道如何。
任何意見/建議?
我正在寫一個autograder web應用程序,它接受來自用戶的程序作爲輸入。有什麼方法可以保護我的Web服務器免受惡意程序輸入的干擾?如何安全地運行不可信的Java應用程序?
目前只支持Java程序輸入。我正在考慮禁止訪問某些軟件包/類,但我不知道如何。
任何意見/建議?
防止惡意程序輸入的最簡單方法是簡單地在單獨的虛擬機中運行它。如果您使用的是Linux,請使用KVM或其他軟件啓動虛擬機,在該處運行該程序,並將輸出記錄在某處(例如通過虛擬串行端口)。讓虛擬機無法訪問網絡並每次擦除其驅動器。
如果失敗了,Java確實有一個廣泛的安全和沙箱模型,最初是爲隔離applet而設計的。然而,正確使用它很困難,我不推薦將它用於這樣的事情 - 產生VM更容易和更安全。
您是否建議每次運行程序時都生成新的VM?這似乎相當笨重和緩慢(儘管有效)。將Web應用程序與這種虛擬機連接似乎也很困難(儘管我沒有太多的虛擬化經驗,所以我可能會錯誤)。理想情況下,我希望應用程序向用戶提供即時反饋。 – tskuzzy
如果您保存虛擬機的原始預引導RAM圖像,實際上可以很快啓動它。 – bdonlan