【问题标题】:Is the Appdomain the only way to sandbox IronPython?Appdomain 是沙盒 IronPython 的唯一方法吗?
【发布时间】:2011-01-05 09:57:20
【问题描述】:

我指的是“Sandbox Ironpython”。

我的要求与原发帖者有些不同:

具体来说,我们需要限制不同的功能 - 文件系统访问是可以的,大多数标准 python 模块也可以,但只有少数显式的 .NET dll 是允许的(我们希望将 python 脚本限制为我们提供的“官方”API)。 AFAIC,这需要挂钩到 python 导入语句的实现。

有什么方法可以做到这一点?

提前致谢!

【问题讨论】:

    标签: .net ironpython appdomain sandbox


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我发布这个是为了防止其他人像我一样浪费时间。

      CLR 安全团队的一位高级开发人员回应如果您尝试使用 os.py 会发生什么:

      “由于 IronPython 中的安全透明代码正在调用安全关键代码 (GCHandle.Free),因此引发了 repro 示例中的 SecurityException,这导致了对 Unrestricted 权限的需求。”

      无法授予它所需的权限:

      “没有一组权限加起来 PermissionState.Unrestricted”

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

      “至于对不受信任的代码进行沙盒处理,我们很快将发布新指南,即不应将部分信任用作安全边界。完整的指南是: “.NET 框架提供了一种机制,用于对运行在同一应用程序中的不同代码执行不同级别的信任,称为代码访问安全 (CAS)。 .NET Framework 中的代码访问安全性不应用作部分受信任代码的安全边界,尤其是未知来源的代码。我们建议不要在未采取替代安全措施的情况下加载和执行来源不明的代码。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-24
        相关资源
        最近更新 更多