C# 如何限制流程能力?

C# 如何限制流程能力?,c#,permissions,C#,Permissions,我正在为ACM解决方案(如TopCoder、Timus等)编写一种通用的竞赛系统。当用户使用web服务发送他的解决方案时,我需要运行/编译它。为了安全运行,我想对其设置限制(无法访问外部文件,无法获取系统时间,无法更改工作目录等) 有两种用户解决方案: 可以编译的解决方案(又名c/c++/pascal)、jit ed和字节码解决方案(c#,java) 解释解决方案(lisp/ruby/python/php) 竞赛者系统是用C#为.NET3.5编写的。竞赛者可以在Mono上的Linux和.NE

我正在为ACM解决方案(如TopCoder、Timus等)编写一种通用的竞赛系统。当用户使用web服务发送他的解决方案时,我需要运行/编译它。为了安全运行,我想对其设置限制(无法访问外部文件,无法获取系统时间,无法更改工作目录等) 有两种用户解决方案:

  • 可以编译的解决方案(又名c/c++/pascal)、jit ed和字节码解决方案(c#,java)

  • 解释解决方案(lisp/ruby/python/php)

竞赛者系统是用C#为.NET3.5编写的。竞赛者可以在Mono上的Linux和.NET上的Windows中运行

最好的方法是什么?如果能够限制已编译的解决方案(使用PermissionAttributes),但我不知道如何限制已解释的解决方案。

最简单的方法(看到您可能需要完全信任)是在非常有限的用户帐户下运行。IIRC来宾帐户不能用于此操作

编辑:

一个干净的虚拟机可能是理想的