是否有可能将.Net DLR托管在"防止白痴"的沙箱中?

blu*_*ing 8 ironpython ironruby dynamic-language-runtime

我想以这样一种方式托管动态语言运行时(DLR),以便在其中运行任意脚本的用户不能使该进程失效?

DLR托管规范描述了如何举办DLR在一个单独的ApplicationDomain.这允许拆除和卸载脚本运行时并通过CAS限制某些操作(例如,我可以限制文件系统访问或禁止使用反射).

但有没有办法,例如: - 限制脚本使用的最大内存量? - 限制脚本创建的线程数? - 检测死锁脚本?

我认为使用为SQL Server开发的非托管.net托管API可以实现这种精细控制.这是方向吗?是否有这种通用.net沙盒的开源项目?

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

Rei*_*aka 3

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

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