在c#中的自定义appdomain中加载dll

时间:2013-07-29 09:25:36

标签: c# appdomain sandbox caspol

我想在c#应用程序中创建一个沙箱模式。我需要在我的自定义或用户定义的应用程序域中加载一个DLL,然后从中执行一个方法。

我需要确保应用程序无法访问任何系统资源(hdd等)。它应该在自己的记忆中生存和死亡。

由于

1 个答案:

答案 0 :(得分:2)

请参阅此文章。

基本上,您需要创建一个使用自定义AppDomain的{​​{1}} ...这会锁定.NET应用程序有权执行的操作。

有不同的方法可以创建一个。

您可以使用现有代码组区域(Int​​ranet,Internet,MyComputer等)定义的预定义组件,也可以创建自己的代码组区域。

可以通过编程方式完成,也可以使用PermissionSet完成。

当您创建此辅助caspol.exe时,它实际上“生活”在与您的应用程序相同的Windows进程中...... .NET只提供了一个“隔离”层,可以保持每个AppDomain的分离。如果你是超偏执的并且不相信那个隔离层,那么你可以创建一个新的Windows进程并在那个进程中运行你的DLL ....虽然这可能会让它有点远。

要限制AppDomain对Windows资源(文件,注册表等)的访问权限,您可以更改Windows安全主体,即使其在具有较低权限的其他Windows帐户下运行。

可能在这里切断......但是其他一些可能有帮助的事情......取决于你想要实现的目标......

如果您想要最小化可被发现的敏感信息(例如,通过内存拖网的人),请使用AppDomain

如果您想阻止任何“代码”或“数据”被分页到磁盘(进入页面文件),那么您可以使用自定义CLR主机,以便将它全部保存在物理内存中。

相关问题