Roslyn c# 脚本沙箱

Roy*_*ato 7 c# sandbox roslyn

有没有办法沙箱执行脚本,使其 a) 不能做任何“危险”的事情,并且 b)只要文件与脚本文件本身在同一目录中,它就可以访问它想要的任何文件。有点像是将所有文件路径视为relative

我想我是在询问 Roslyn 的脚本安全措施及其定制级别。

Ber*_*man 1

这是可能的,但正如 SLAks 所说,这是一个难题。您可能应该阅读在 .NET 4.0 中,如何“沙箱”内存中程序集并执行方法?。您需要执行以下步骤

  • 使用 CSharpCodeProvider 或 VBCodeProvider 将源代码编译为硬盘驱动器上的程序集。
  • 创建一个新的 AppDomain,仅授予您希望其拥有的权限。
  • 使用 MarshalByRefObject 在原始 AppDomain 和刚刚创建的子 AppDomain 之间来回通信。看看这个这个