2012-04-10 119 views
4

我们正在为ASP.NET中的XSLT处理器开发在线测试应用程序,但是,我有点担心如何限制系统的漏洞。 .NET有可能对第三方非托管或托管应用程序进行沙箱吗?它应该:我如何从托管代码调用外部非托管应用程序?

  • 不得以任何方式或漏洞启动任何其他进程;
  • 无法访问系统上的其他现有进程;
  • 当处理能力或内存过大时会被杀死;
  • 适用于托管和非托管外部应用程序;
  • 不应该能够访问系统调用

一些应用程序有一个托管API,但这并不足够,因为比我更需要在相同的处理空间ASP.NET与所有潜在的风险运行(堆栈溢出,内存异常,缓冲区溢出)。我不知道.NET是否提供非托管应用程序的沙盒。

我们目前在具有特定亲和力的控制台中执行外部程序并对此进行监控,但这不像是一种正确的或者甚至是非常安全的方法。

+1

+1这是对外部装配非常狭窄的理解的一个非常广泛的要求。我也会担心。 :)我很高兴那不是我的要求。这很有趣。 – rfmodulator 2012-04-10 11:41:29

回答

0

您可以在AppDomain内执行托管代码,该代码可以配置为提供某种级别的保护,但只要允许非托管代码运行,它几乎可以访问其运行下的用户可以访问的所有内容。 我敢肯定你可以防止在AppDomain中执行不受管理/不安全的代码。

+0

我以为我知道AppDomains,但显然注意到:自.NET 2.0以来,他们可以[崩溃整个应用程序](http://msdn.microsoft.com/en-us/library/ms228965.aspx),导致不那么理想的解决方案。另请参阅此答案:http://stackoverflow.com/questions/7071957/appdomain-handling-the-exceptions。显然,他们无法处理非托管应用程序。 – Abel 2012-04-10 12:31:13