C# 如何包装不受信任的应用程序?

C# 如何包装不受信任的应用程序?,c#,.net,word-wrap,C#,.net,Word Wrap,想象一下一个不受信任的应用程序(插件),它读取标准输入并写入标准输出 如何获取此应用程序为指定输入返回的输出,以防止任何副作用 例如,若应用程序删除磁盘上的文件,则应检测到该文件,并应取消此尝试 它是一种包装器应用程序。有可能建造它吗 不太复杂的任务太有趣了:使用.NET制作这个包装器(主机和客户端都是用.NET语言编写的)。最安全的方法是将插件加载到您使用配置的 当您创建AppDomain时,您可以确切地指定代码在此沙箱中可以执行的操作。在那里运行的代码仅限于您设置的限制。但这一过程在您第一次

想象一下一个不受信任的应用程序(插件),它读取标准输入并写入标准输出

如何获取此应用程序为指定输入返回的输出,以防止任何副作用

例如,若应用程序删除磁盘上的文件,则应检测到该文件,并应取消此尝试

它是一种包装器应用程序。有可能建造它吗


不太复杂的任务太有趣了:使用.NET制作这个包装器(主机和客户端都是用.NET语言编写的)。

最安全的方法是将插件加载到您使用配置的

当您创建AppDomain时,您可以确切地指定代码在此沙箱中可以执行的操作。在那里运行的代码仅限于您设置的限制。但这一过程在您第一次这样做时可能会令人困惑,并且可能仍然会让您面临漏洞

使用AppDomains隔离程序集是一个有趣的过程。您可能会认为您将插件加载到另一个AppDomain中,然后通过AppDomain中的代理使用它们,但情况正好相反。他们需要在AppDomain中使用您的代理。如果您不能理解并正确执行此操作,您将在主AppDomain中加载插件代码并在那里执行,而不是在受限域中执行。如果你做得不对,你会遇到很多麻烦(订阅活动有一些有趣的副作用)

我建议进行原型设计,通过C#复习CLR中的AppDomain章节,并尽可能多地阅读这个主题


这是我制作的一个测试应用程序,用于调查跨appdomain事件。

最安全的方法是将该插件加载到您配置的

当您创建AppDomain时,您可以确切地指定代码在此沙箱中可以执行的操作。在那里运行的代码仅限于您设置的限制。但这一过程在您第一次这样做时可能会令人困惑,并且可能仍然会让您面临漏洞

使用AppDomains隔离程序集是一个有趣的过程。您可能会认为您将插件加载到另一个AppDomain中,然后通过AppDomain中的代理使用它们,但情况正好相反。他们需要在AppDomain中使用您的代理。如果您不能理解并正确执行此操作,您将在主AppDomain中加载插件代码并在那里执行,而不是在受限域中执行。如果你做得不对,你会遇到很多麻烦(订阅活动有一些有趣的副作用)

我建议进行原型设计,通过C#复习CLR中的AppDomain章节,并尽可能多地阅读这个主题


这是我制作的一个测试应用程序,用于调查跨appdomain事件。

您是否考虑过使用安全性有限的应用程序域。您是否考虑过使用安全性有限的应用程序域。