2010-04-01 50 views
7

在站點Ideone中,用戶上載要在遠程服務器上運行的代碼。這與在線裁判的功能類似。如何保護網上法官免受惡意代碼的侵害?

問題是用戶可能上傳試圖「破解」系統的代碼。我知道在C和C++中,禁用某些系統調用很容易(修補幾個.dll),但我不太確定其他語言。

如果你想支持更高級別的語言(Erlang,Haskell)對在線評判你將如何保護你的系統?

+0

您可能想查看github上的「safeexec」項目 – daveagp 2012-04-02 22:13:54

回答

2

作爲非特權用戶在沙箱中運行。這並不是絕對的萬無一失,但它使得持久的傷害或嚴重的妥協非常高的酒吧。它也不依賴於可能的選項或修改有問題的語言運行時間。如果您正在處理完全編譯的語言(即沒有運行時解釋器),那麼也可以這樣做。

例如,拿Erlang。設置chroot jail,其中只包含運行Erlang所需的內容。添加一個非特權用戶帳戶和主目錄。引入要運行的代碼,驗證所有文件/目錄權限,更改爲非特權UID並運行代碼。

您可以在上面引用的維基百科文章中找到有關設置監獄的更詳細說明。對於不同的操作系統,程序和要求略有不同。

相關問題