2011-08-23 90 views
5

有一些網站(如one)允許用戶使用不同的語言提交代碼,系統編譯並執行測試用例。作爲一名開發人員,我很想知道他們是怎麼做到的,他們如何支持多種語言(PHP,Python,C,.NET,javascript)?如何動態編譯和執行代碼?

提交的代碼不可能是惡意的,從而危害他們執行代碼的環境?

謝謝。

回答

0

我不能說那個特定的網站,但通常他們創建一個受限制的環境,稱爲sandbox。在這種環境下,他們可以進一步限制在那裏運行的程序的可用性。這也可以通過阻止語言中的某些API調用來完成。

Chroot on * nix是創建沙箱的一種方式。

+0

有沒有辦法在Windows環境中創建沙箱? – Nick

+0

我可以想象VirtualBox或VM Ware之類的虛擬機解決方案,Google發現這是第一個沙盒+窗口鏈接 - http://downloadsquad.switched.com/2009/03/11/five -sandboxing-應用到保護,您的窗口電腦/ – arunkumar

3

很想知道他們是如何做到這一點的,他們如何支持多種語言(PHP,Python,C,.NET,JavaScript)?

簡單:安裝了多種語言安裝,並針對給定輸入(當然由用戶給出)調用正確的語言。

提交的代碼不可能是惡意的,從而危害他們執行代碼的環境?

是的,當然。但是,有無數的潛在對策。以多年來開發的各種形式對沙盒進行沙盒處理,在特定時間後關閉程序,防止訪問具有潛在危險的功能等。請參閱Codepad's about page瞭解真正的網站對此有何評論。