2014-03-02 59 views
3

https://www.pythonanywhere.com/try-ipython/這樣的網站如何工作?如何製作基於網頁的python交互式外殼

他們可能會執行幾個exec命令,或與ipython連接。

但是,如果他們沒有做任何「預防措施」(他們這樣做),這可能是非常不安全的。一個純粹的(和邪惡的)用戶可以做類似

import shutil, os 

並做一些壞事。

技術上web based python interactive shell怎麼可能?以及如何確保交互式shell不會對提供者造成任何不良影響?

+2

沙盒在虛擬機?這是我想到的第一種方式。雖然可能不是最有效的方式。 – user2357112

+0

ipython有一個基於web的筆記本模式,但綁定到localhost。爲了不安全地提供服務,只需要更改綁定或使用反向代理。 – Paul

+0

可能重複的[防止Python代碼導入某些模塊?](http://stackoverflow.com/questions/1350466/preventing-python-code-from-importing-ertain-modules) – Paul

回答

6

PythonAnywhere dev here。我們將文件系統監獄,低特權帳戶,ulimit限制和cgroups組合到沙箱用戶。再加上一些複雜的iptables路由。

未來我們很可能會轉向LXC或Docker--我們選擇了現在使用的特定組合,它基於2012年發佈我們系統的第一個版本時準備好的產品,以及如果我們今天從頭開始,我們會以不同的方式做。

這並不是說我們目前的系統很糟糕 - 它的運作非常好。但是這意味着它涉及到很多代碼,如果我們使用了現在可用的東西,並且簡單的代碼顯然更好,它會涉及很多代碼:-)

[編輯]我還應該補充說,您可能會發現this talk I did at EuroPython有趣。它並沒有涉及shell的工作方式的安全方面,但它與你的問題(如何製作一個基於web的Python交互式shell)相關,因爲它涵蓋了運行一個shell所需的一堆東西在瀏覽器中並將其連接到在服務器上運行的Python進程。

+0

我想沒有人能比python更好地解釋自己。 謝謝:) – goFrendiAsgard

1

在操作系統中有各種沙盒/隔離技術,包括文件系統監獄,只讀文件系統,低ulimit限制,低特權用戶帳戶,LXC容器,selinux限制,docker容器,全功能虛擬機,儘管如此,重啓爲不可變映像狀態的虛擬機,等等。不知道pythonanywhere正在採用什麼。

+0

好吧,我想VM是唯一的方式...... – goFrendiAsgard