代码之家  ›  专栏  ›  技术社区  ›  alexey

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

  •  0
  • alexey  · 技术社区  · 15 年前

    想象 不受信任的应用程序(插件) 从标准输入读取数据并写入标准输出的数据。

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

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

    有点像 包装器 应用。有可能建造它吗?

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

    1 回复  |  直到 15 年前
        1
  •  5
  •   Will    15 年前

    最安全的方法是将该插件加载到 separate AppDomain 您可以使用配置 security evidence for the requirements you have .

    创建AppDomain时,可以准确指定代码在此沙盒中可以执行的操作类型。在那里运行的代码仅限于您设置的限制。但这一过程在您第一次这样做时可能会令人困惑,并且可能仍然让您容易受到攻击。

    使用AppDomain隔离程序集是一个有趣的过程。您可能会认为您将插件加载到另一个AppDomain中,然后通过AppDomain中的代理来使用它们,但情况恰恰相反。他们需要在其AppDomain中使用您的代理。如果您不能理解并正确地执行此操作,您将最终在主AppDomain中加载插件代码并在其中执行,而不是在受限域中执行。如果你做得不正确的话,有很多你会被忽略(订阅事件有一些有趣的副作用)。

    我建议进行原型设计,通过C_复习clr中的AppDomain一章,并尽可能多地阅读相关内容。


    这是我为调查跨AppDomain事件而开发的一个测试应用程序。
    http://cid-f8be9de57b85cc35.skydrive.live.com/self.aspx/Public/appdomainevents.rar

    推荐文章