【问题标题】:How to provide isolation?如何提供隔离?
【发布时间】:2012-04-05 09:07:27
【问题描述】:

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

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

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

市场上是否有为 .NET 应用程序提供隔离环境的产品?

谢谢。

【问题讨论】:

  • 这并不能直接回答问题,但您可以考虑在 Linux 上使用 Mono。它不提供完美的 .NET 功能,但它可以帮助防止对服务器造成损害。 mono-project.com/Main_Page
  • 它是什么样的代码,它在做什么?一个 Winform 应用程序,一个由您的应用程序加载的插件 DLL,一个 ASP.NET 页面?它将影响您可以使用的隔离选择。

标签: .net virtualization isolation windows-virtual-pc


【解决方案1】:

.NET 内置了security features,可以完全按照您的意愿进行操作。在不知道他们的 .NET 应用程序是如何启动的情况下,我不能确定它是否会对您有所帮助,但如果您控制应用程序的启动,您可以 apply a security context to their AppDomain and restrict what they can access。从您在原始帖子中所说的内容来看,如果您阻止了除 WebPermission 之外的几乎所有内容(您甚至可以将其限制为 specific addresses),那么在您的系统上运行应该是安全的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2017-12-24
    • 2012-01-23
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多