Assembly.CreateInstance和安全性

Mar*_*rkP 6 c# security scripting

我正在考虑使用C#的能力来按需编译代码作为脚本语言的基础.我想知道,我怎么能沙箱我正在执行的脚本,以便他们无法访问文件系统,网络等.基本上,我想要对正在运行的脚本的限制权限.

我采取的步骤:

CompilerResults r = CSharpCodeProvider.CompileAssemblyFromSource(source);

Assembly a = r.CompiledAssembly;

IScript s = a.CreateInstance(...);

s.EntryPoint(...);
Run Code Online (Sandbox Code Playgroud)

Nic*_*oiu 2

建议的方法是在沙盒 appdomain中执行可疑代码。http://blogs.msdn.com/b/shawnfa/archive/2006/04/19/579066.aspx给出了几个原因,更重要的一个是大多数其他潜在方法从 . NET 4.0。