我想以这样一种方式托管动态语言运行时 (DLR),以使在其中运行任意脚本的用户无法关闭进程?
DLR 托管规范描述了如何在单独的 ApplicationDomain 中托管 DLR 。这允许拆除和卸载脚本运行时并通过 CAS 限制某些操作(例如,我可以限制文件系统访问或禁止使用反射)。
但是还有一些方法可以例如: - 限制脚本使用的最大内存量?- 限制脚本创建的线程数?- 检测死锁的脚本?
我认为使用为 SQL Server 开发的非托管 .net 托管 API可以实现这种细粒度的控制。这是前进的方向吗?这种通用的.net沙盒有开源项目吗?
以下是我发现的一些可能有用的参考资料:
- 探索使用 .NET Framework 2.0 安全托管不受信任的加载项的技术
- DLR 讨论列表上的主机保护线程
- 使用主机保护(.Net 安全博客)