ironpython - 是否可以在 "idiot-proof"沙箱中托管 .Net DLR?

标签 ironpython ironruby dynamic-language-runtime

我想托管动态语言运行时 (DLR),以使在其中运行任意脚本的用户无法关闭进程?

DLR hosting spec介绍如何在单独的 ApplicationDomain 中托管 DLR。这允许拆除和卸载脚本运行时并通过 CAS 限制某些操作(例如,我可以限制文件系统访问或禁止使用反射)。

但是还有其他方法可以例如:
- 限制脚本使用的最大内存量?
- 限制脚本创建的线程数?
- 检测死锁脚本?

我认为使用 unmanaged .net hosting API 可以实现这种细粒度的控制。是为 SQL 服务器开发的。这是要走的方向吗?这种通用的 .net 沙箱是否有开源项目?

以下是我发现的一些可能有用的引用资料:

  • Discover Techniques for Safely Hosting Untrusted Add-Ins with the .NET Framework 2.0
  • Host protection DLR 讨论列表上的线程
  • Using Host Protection (.Net安全博客)
  • 最佳答案

    看看Terrarium -- 这是一款游戏,您可以使用 .NET 语言构建自己的自主小动物,然后将它们与描述它们的程序集一起传送到其他联网计算机。目标是让您的小动物接管整个生态系统,要么杀死其他一切,要么战略性地管理食物资源。

    我记得,任何花费超过 0.n 秒“思考”或 n kb 内存的小动物都会被删除。

    关于ironpython - 是否可以在 "idiot-proof"沙箱中托管 .Net DLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269290/

    相关文章:

    python - 如何包装 C++ 代码以供 IronPython 访问

    c# - 从 IronRuby 返回一个 CLR 类型

    c# - 结合 IIS 7.5 的动态语言运行时错误

    .NET DLR 安全或沙盒脚本

    c# - 使用动态关键字从 C# 运行 IronPython 对象

    c# - IronPython DLR;将参数传递给编译代码?

    python - 使用扩展将字节添加到字节数组时为"unicode argument without an encoding"

    c# - IronPython:更改 SourceCodeKind.InteractiveCode 的行为

    IronRuby - 如何要求没有强名称的 .NET 程序集?

    c# - 检索修改后的变量值