我想托管动态语言运行时 (DLR),以使在其中运行任意脚本的用户无法关闭进程?
DLR hosting spec介绍如何在单独的 ApplicationDomain 中托管 DLR。这允许拆除和卸载脚本运行时并通过 CAS 限制某些操作(例如,我可以限制文件系统访问或禁止使用反射)。
但是还有其他方法可以例如:
- 限制脚本使用的最大内存量?
- 限制脚本创建的线程数?
- 检测死锁脚本?
我认为使用 unmanaged .net hosting API 可以实现这种细粒度的控制。是为 SQL 服务器开发的。这是要走的方向吗?这种通用的 .net 沙箱是否有开源项目?
以下是我发现的一些可能有用的引用资料:
最佳答案
看看Terrarium -- 这是一款游戏,您可以使用 .NET 语言构建自己的自主小动物,然后将它们与描述它们的程序集一起传送到其他联网计算机。目标是让您的小动物接管整个生态系统,要么杀死其他一切,要么战略性地管理食物资源。
我记得,任何花费超过 0.n 秒“思考”或 n kb 内存的小动物都会被删除。
关于ironpython - 是否可以在 "idiot-proof"沙箱中托管 .Net DLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269290/