2011-01-05 54 views
2

我指的是「Sandbox Ironpython」。AppDomain是沙箱IronPython的唯一方式嗎?

我已經從原來的海報有些不同的要求:

具體來說,我們需要不同的功能被限制 - 文件系統的訪問是好的,大多數標準的模塊也都不錯,但只有少數明確。 NET dll將被允許(我們希望將python腳本限制爲我們提供的「官方」API)。 AFAICs,這需要鉤入python import語句的實現。

任何方式來完成此?

在此先感謝!

回答

4

是的,AppDomains是唯一的方法。如果你通過.NET沙箱限制訪問,那麼任何你可以做的任何事情都會被適當限制。那麼爲什麼要限制任何Python腳本呢?他們不能做任何你沒有其他許可的事情。

1

我正在發佈此信息以防止其他人浪費盡可能多的時間。

從響應,如果您嘗試使用os.py會發生什麼的CLR安全小組的一名高級開發:

「的清樣樣品中的拋出:SecurityException被拋出,因爲在IronPython的安全透明代碼正在調用安全關鍵代碼(GCHandle.Free),這會導致對無限制權限的需求。「

這是不可能給它需要的權限:

「沒有設置權限,增加了高達PermissionState.Unrestricted」

即使你能得到它的工作, AppDomain沙盒是毫無價值的:

「就沙盒不可信代碼而言,我們很快就會發布新的指導,即部分信任不應該被用作安全邊界,完整的指導是: 「.NET Framework提供了一種機制,用於在稱爲代碼訪問安全性(CAS)的同一應用程序中運行的不同代碼上實現不同級別的信任。 .NET Framework中的代碼訪問安全性不應用作部分受信任代碼的安全邊界,尤其是未知來源的代碼。我們建議不要加載和執行未知來源的代碼,而不採取其他安全措施。「