我正在嘗試構建一個類似於Codecademy的教育編碼網站,但坦率地說我不知道應該採取哪些步驟。我能指出正確的方向,甚至包括一個簡單的python解釋器在webapp?如何在網站上嵌入Python解釋器
回答
一個選項可能是使用PyPy創建一個沙盒python。這會限制某人可以做的外部操作。
一旦你完成了設置,你的網站將獲取代碼源,通過ajax發送給你的網絡服務器,服務器將運行在沙箱python實例的子進程中的代碼。如果花費比5秒更長的時間,你也可以殺死進程。然後,您將輸出作爲對客戶端的響應返回。
請參閱在PyPy沙箱相關鏈接尋求幫助:
http://doc.pypy.org/en/latest/sandbox.html
http://readevalprint.com/blog/python-sandbox-with-pypy.html
要創建一個完全交互式的REPL甚至會更多地參與。您需要爲您的服務器上的每個客戶端保留一位解釋器。然後接受輸入的ajax「行」,並通過與正在運行的進程進行通信來運行它們,並返回輸出。
整體而言,不是微不足道的。你需要一些強大的開發技能來做到這一點舒適。如果你只是在學習,你可能會發現這項任務有點令人生畏。
感謝您列出我必須採取的步驟。我認爲這樣的項目可能會很艱難。我很感激你花時間向我展示了繩索! – twoxmachine
這裏還有比您想象的更多的事情。
主要問題是你不能讓人們在你的web服務器上運行任意Python代碼。例如,如果他們這樣做會發生什麼
import os
os.system("rm -rf *.*")
很顯然,您必須安全地運行此Python代碼。但是,然後你有保護Python的問題,這基本上是不可能的,因爲它是多麼動態。所以你可能不得不在虛擬機中運行Python shell,這會帶來一些麻煩。
通過一些搜索,我意識到一些涉及允許任意代碼的安全問題。謝謝你給我展示了一個實際的例子,它爲我澄清了很多! 我將討論您鏈接的AJAX shell,試圖弄清楚它是如何實現的。我很感激你向我展示它。 – twoxmachine
最近的一種選擇是使用repl。因爲編譯器使用JavaScript的所以編譯和執行在用戶側製成,這意味着服務器是免費的漏洞做出
此選項是真棒。
他們有編譯器:Python3,Python和Java腳本,Java和Ruby的,PHP ...
我強烈建議你在http://repl.it
查找到LXC集裝箱檢查他們的網站。他們有一個非常酷的API,可以用來創建輕量級的Linux容器。您可以在該容器內運行子進程命令,這樣最終用戶就不會混淆主服務器。
- 1. 在TM4c1294XL中嵌入python解釋器
- 2. 如何使用tkinter在python中嵌入python解釋器框架?
- 3. 如何在Python應用程序中嵌入Python解釋器?
- 4. 如何將編譯器和解釋器嵌入到像codecademy這樣的網站?
- 5. 在嵌入式c應用程序中嵌入python解釋器
- 6. 如何重新初始化嵌入式Python解釋器?
- 7. 如何將args傳遞給嵌入式python子解釋器?
- 8. 嵌入Perl解釋器
- 9. 嵌入式C++解釋器?
- 10. 在python應用程序中嵌入python解釋器
- 11. 如何嵌入網站
- 12. 網站使用默認的python解釋器而不是安裝virtualenv解釋器
- 13. 如何嵌入頂點的網站上我的HTML網站
- 14. 在網站中嵌入Python遊戲
- 15. 在Python/bokeh網站中嵌入陰謀
- 16. Ruby解釋器在C代碼嵌入
- 17. 如何在網站上嵌入/傳輸網絡電臺?
- 18. 如何在網站中嵌入音頻?
- 19. Python 3解釋器在嵌入時是否泄漏內存?
- 20. 在嵌入式Python解釋器中打印變量
- 21. 嵌入式Python解釋器無法導入c模塊
- 22. Android上的Python解釋器
- 23. 嵌入在woocommerce網站上的Woocommerce SPA
- 24. 在ASP.NET MVC網站上嵌入視頻
- 25. 在網站上嵌入氣泡圖表
- 26. 在Joomla網站上嵌入YouTube視頻
- 27. 在外部網站上嵌入javascript(asp.net)
- 28. JS在我的網站上嵌入gfycat
- 29. 在網站上嵌入excel工作簿
- 30. 在網站上嵌入3D模型
我不是最有經驗的網頁開發工具。我希望儘可能多地從一個有着雄心勃勃的目標的項目中學習! – twoxmachine
看看這個:http://doc.pypy.org/en/latest/sandbox.html – ChristopheD
非常感謝@ChristopheD。我會通讀它。 – twoxmachine