如何从托管代码沙盒调用外部非托管应用程序

本文关键字:外部 应用程序 调用 托管代码 | 更新日期: 2023-09-27 18:30:48

我们正在为 ASP.NET 的XSLT处理器开发一个在线测试应用程序,但是,我有点担心如何限制我们系统的漏洞。是否可以使用 .NET 对第三方非托管或托管应用程序进行沙盒处理?它应该:

  • 不允许以任何方式或漏洞启动任何其他进程;
  • 无法访问系统上的其他现有进程;
  • 当它占用太多的处理能力或内存时被杀死;
  • 使用托管和非托管外部应用程序;
  • 应该无法访问系统调用

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

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

如何从托管代码沙盒调用外部非托管应用程序

您可以在 AppDomain 中执行托管代码,该代码可以配置为提供某种级别的保护,但是一旦您允许运行非托管代码,它几乎可以访问运行其的用户有权访问的所有内容。不过,我很确定您可以防止在 AppDomain 中执行非托管/不安全的代码。