2013-11-04 96 views
2

在開發我的一個應用程序的過程中,我已經達到了希望爲用戶提供更強大過濾器的程度。因此,我想爲用戶提供一個簡單的腳本界面。腳本語言將是Python。用戶輸入的Python安全限制

由於顯而易見的原因,我想收緊語言的範圍以符合我的特定用途(我不希望用戶觸摸服務器的HDD文件等)。我也不想自己寫一個Python解釋器(這會重新發明輪子,最後「新」輪將是矩形的)。但是,我還沒有找到適合此目的的任何合適的庫或模塊。

Groovy的編譯定製器和編譯器配置方法正是我想要的,對Python有類似的東西嗎?

+0

最簡單的方法 - 從自動加載禁用大多數模塊/功能,然後阻止他們的選擇導入其他庫。您也可以覆蓋您不希望它們使用的功能。 –

回答

1

您要查找的內容稱爲「沙箱」或「限制執行」。 This wiki page discusses some of the details

簡而言之,Python極客們和專家們在Python之上構建了一個沙盒,但最終都失敗了。

主要原因是Python提供了很多路徑來做一些沙箱或者不得不禁止常見用例(渲染大量的庫和Python代碼無用)的東西,或者它將不得不在沙箱中出現漏洞這會使這個概念變得無用。

所以,雖然看起來像一個很好和簡單的想法,但迄今爲止,沒有解決方案。 AFAIK,Python中沒有任何鉤子來調整字節碼編譯器來實現像Groovy Sandbox之類的東西。

相關: