【问题标题】:How do I sandbox calling an external unmanaged application from managed code?如何从托管代码沙箱调用外部非托管应用程序?
【发布时间】:2012-04-22 16:17:03
【问题描述】:

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

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

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

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

【问题讨论】:

  • +1 对于对外部程序集的狭隘理解来说,这是一组非常广泛的要求。我也会担心的。 :) 我很高兴这不是我的要求。不过这很有趣。

标签: c# asp.net .net-4.0 sandbox


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2010-09-18
  • 2013-08-24
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
相关资源
最近更新 更多