1

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

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

谢谢

4

1 回答 1

2

见这篇文章。

基本上,您需要创建一个AppDomain使用自定义的PermissionSet... 来锁定 .NET 应用程序有权执行的操作。

有不同的方法来创建一个。

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

这可以通过编程方式完成,也可以使用caspol.exe.

当您创建此辅助节点AppDomain时,它实际上与您的应用程序“存在”在同一个 Windows 进程中……NET 只是提供了一个“隔离”层,使每个 AppDomain 保持分离。如果您极度偏执并且不信任该隔离层,那么您可以创建一个新的 Windows 进程并在该进程中运行您的 DLL ......尽管这可能有点远。

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

可能在这里切线...但是其他一些可能会有所帮助的事情...取决于您要实现的目标...

如果您有想要尽量减少被发现的敏感信息(例如,被某人翻阅记忆),请使用SecureString.

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

于 2013-07-29T09:43:11.570 回答