2013-01-05 75 views
3

我正在評估使用NodeJs進行共享編程平臺的過程。如何禁用NodeJs內部模塊?

用戶應該能夠提交代碼並在服務器上運行它。爲了給他們提供最好的基礎,應該提供幾個NodeJs模塊。

出於安全原因,進程應該被chrooted禁止訪問系統資源。

最好的辦法似乎是使用child_processes,特別是fork()函數。

爲了進一步的安全性,還應該禁用一些NodeJs模塊,例如啓動額外的子進程。

如何禁用孩子的這些模塊?我甚至不能似乎找到編譯選項禁用某些默認情況下,

回答

3

基本上,你在找什麼是可信的環境中運行不受信任的代碼。我猜這裏的關鍵是沙盒。

請注意,是在那裏創建和Node.js的管理沙箱中,等各種解決方案:

  • gf3/sandbox,這是用於node.js的
  • hflw/node-sandbox一記漂亮的JavaScript沙箱,這是一個高級沙盒庫,允許沙盒和父進程之間進行通信。

我沒有任何實際經驗,但我想這是您邁向正確方向的一步。也許你想在這裏與他們分享你的經歷?我認爲這將是真棒:-)

希望這會有所幫助。

+1

我找到了第一個解決方案,但不是「節點沙箱」,我會嘗試,它似乎有可能性白名單的C綁定,謝謝! :) – favo

+1

節點沙箱似乎很好地工作,遇到了一些麻煩,從主暴露RPC功能的沙箱(開在github這個問題),但另有固溶:) – favo

+0

感謝分享這個:-) –