2012-03-20 59 views
1

我需要允许我的用户在我的服务器上执行.NET代码他们提供。我知道安全是一个大问题,但必须这样做。如何提供隔离?

目前,我在有限的Windows帐户下运行我的用户代码。但是,我担心.NET框架提供了许多类,如果恶意使用它们可能会损害服务器 - Reflection命名空间下的类就是一个例子CodeDom是另一个问题。

我希望有一种方法可以创建一个可以运行.NET代码但完全隔离的“轻量级虚拟环境”。有点像虚拟PC,但更轻量级 - 唯一的能力是用户可以进行计算,并可能调用第三方Web服务。

市场上有没有为.NET应用程序提供隔离环境的东西?

谢谢。

+0

这并不直接回答这个问题,但您可以考虑在Linux上使用Mono。它不提供完美的.NET功能,但它可以帮助防止对服务器造成危害。 http://www.mono-project.com/Main_Page – viking 2012-03-20 20:45:45

+0

它是什么类型的代码,它在做什么?一个Winform应用程序,一个由你的应用程序加载的插件DLL,一个ASP.NET页面?它会影响你可以使用的隔离选择。 – 2012-03-20 20:49:35

回答

1

.NET内置了security features来完成你想要做的事情。在不知道他们的.NET应用程序如何启动的情况下,我无法确定它是否会对您有所帮助,但如果您控制启动应用程序,您可以apply a security context to their AppDomain and restrict what they can access。从你原来的帖子中说的话,如果你屏蔽了几乎所有的东西,除了WebPermission(你甚至可以限制它到specific addresses),它应该是安全的在你的系统上运行。