.net Appdomain是沙盒IronPython的唯一方法吗?

.net Appdomain是沙盒IronPython的唯一方法吗?,.net,ironpython,appdomain,sandbox,.net,Ironpython,Appdomain,Sandbox,我指的是 我的要求与原始海报有所不同: 具体来说,我们需要限制不同的功能—文件系统访问是可以的,大多数标准python模块也是可以的,但是只允许少数显式的.NET DLL—我们希望将python脚本限制在我们提供的官方API中。在AFAICs中,这需要挂接到python导入语句的实现中 有没有办法做到这一点 提前谢谢 是的,AppDomains是唯一的方法。如果您通过.NET沙盒限制访问,那么您可以使用标准库执行的任何操作也将受到适当的限制。那么,为什么要限制任何Python脚本呢?他们不能做任

我指的是

我的要求与原始海报有所不同:

具体来说,我们需要限制不同的功能—文件系统访问是可以的,大多数标准python模块也是可以的,但是只允许少数显式的.NET DLL—我们希望将python脚本限制在我们提供的官方API中。在AFAICs中,这需要挂接到python导入语句的实现中

有没有办法做到这一点


提前谢谢

是的,AppDomains是唯一的方法。如果您通过.NET沙盒限制访问,那么您可以使用标准库执行的任何操作也将受到适当的限制。那么,为什么要限制任何Python脚本呢?他们不能做任何你不允许的事情。

我发布这篇文章是为了防止其他人像我这样浪费时间

CLR安全团队的一名高级开发人员针对您尝试使用os.py时发生的情况做出的回应:

由于IronPython中的安全透明代码正在调用安全关键代码GCHandle.Free,这导致了对无限制权限的需求,因此引发了repo示例中的SecurityException

无法授予它所需的权限:

没有添加到PermissionState的权限集。不受限制

即使您可以让它工作,AppDomain沙箱也毫无价值:

至于沙箱不受信任的代码,很快,我们将发布新的指导,即不应将部分信任用作安全边界。指南全文如下: “.NET Framework提供了一种机制,用于在同一应用程序中运行的不同代码上强制执行不同级别的信任,称为代码访问安全CA。.NET Framework中的代码访问安全不应用作部分受信任代码的安全边界,尤其是来源未知的代码。我们建议不要加载和删除这些代码。”执行来源不明的代码,而不采取其他安全措施