上編譯器,我希望建立一個Web服務,可以編寫一些輸入的代碼(可能是C/Java的),並可以在其上運行一些測試。我應該遵循什麼樣的設計?我可以在我的服務器上放置什麼編譯器來完成這項工作?建議?優點?缺點?需要服務器
需要服務器
回答
你可能會想有點像Go Playground
Kattis使用GCC和Sun的Java編譯器來編譯C/C++/Java的。你打算支持哪些平臺當然會決定你可以使用哪些編譯器。我認爲如果你只是使用多個編譯器而不是試圖找到一種可以編譯你想要支持的語言的編譯器,那對你來說會更容易。
其中一個最大的問題可能會阻止提交的代碼接管您的主機。 Java包含內置的支持限制程序可以使用的類,但我不確定如何防止在C/C++中分叉和創建套接字。
+1提到的安全問題。一種可能性是擁有一個運行代碼的權限極少的特殊用途帳戶,並且運行代碼時設置了嚴格的限制(例如:低級,CPU和內存容量較低)。即使這樣,試圖確保這樣的東西就像試圖通過單獨堵住所有的孔來防水麻布袋一樣。 – 2010-10-31 00:39:35
是的 - 需要沙箱設置來限制用戶輸入代碼的操作。 – sparkFinder 2010-10-31 00:46:33
對於Java,見JavaCompiler。
我提供了一個小工具,稱爲SSCCE Text Based Compiler可以做到這一點在客戶端,並作爲文檔。請注意,它需要一個Java SDK,而不僅僅是一個JRE。
優點:
- 服務器端編譯的代碼&運行聽起來時髦!
缺點:
很久以前,我還提供了編譯代碼(但不運行)在我的領域之一的工具。事實證明,特定類型的代碼可以將Sun編譯器以節點的形式連接起來,這需要超過30分鐘才能編譯少於100行的代碼!拒絕服務攻擊,任何人?由於我沒有時間來實施解決方案,因此我撤回了該工具。
對於運行的代碼,你將幾乎肯定需要實施全面的SecurityManager。
最簡單的事情就是允許用戶上傳自己的JSP頁面的Web容器(如Tomcat或Jetty)。
這些是由Web容器自動編譯並執行,在請求時。
- 1. Ember.js需要的服務器
- 2. 我們應該需要兩臺服務器,在服務器端
- 3. 將http服務器轉換爲https服務器需要什麼?
- 4. Net ::服務器SSL服務器提示需要
- 5. Bitnami gitlab需要SSH服務器
- 6. 需要:用於.Net的MM7服務器
- 7. React.js是否需要服務器端?
- 8. iOS訂閱 - 我需要服務器嗎?
- 9. 的Javascript腳本需要服務器端
- 10. JSONP是否需要修改服務器?
- 11. nsurlconnection服務器需要特殊設置?
- 12. XMPP服務器(Openfire)需要實現嗎?
- 13. 需要jQuery的流星服務器端
- 14. Apache Cordova是否需要服務器?
- 15. 需要多服務器架構建議
- 16. 需要Android應用服務器指導
- 17. REST服務器,Delphi和Web服務 - 需要的建議
- 18. 需要Web服務幫助
- 19. 我需要服務嗎?
- 20. TransactionScope需要DTC服務嗎?
- 21. 我需要微服務嗎?
- 22. 需要Web服務教程
- 23. 需要在服務器上安裝SWF,但需要在另一個服務器上安裝數據
- 24. 服務器http:/ localhost:8080需要用戶名和密碼。服務器說:XDB
- 25. 分離Web服務器和應用程序服務器,都需要Java?
- 26. 需要用Python編寫的POP3服務器或IMAP服務器的示例
- 27. KnockoutJS映射 - 只需填寫我需要的服務器
- 28. 如何修復Stunnel服務器上的「服務[XXX]:SSL服務器需要證書」?
- 29. 服務器是否需要爲服務器編譯可執行文件所需的軟件包?
- 30. 備份MongoDB,需要服務將轉儲轉移到另一臺服務器?
我會隨你編寫的代碼編寫任何編譯器。 – mikerobi 2010-10-30 23:57:18
我的意思是 - 是否有任何特定的編譯器系統/框架已針對Web中的請求和代碼進行了優化,並將結果發送回去? – sparkFinder 2010-10-31 00:06:17
不,您將不得不查找或開發一個接受代碼並執行編譯器的Web服務。 – mikerobi 2010-10-31 00:08:03