c# – .NET / Security:限制运行时加载的程序集访问某些API
作者:互联网
在shell应用程序中,我需要能够在运行时加载和执行其他.NET程序集,但不能给予它们完全的信任.本质上,我想限制它们(加载的程序集)接触任何系统资源(线程,网络等),唯一的例外是隔离存储.但是,来自“我”的程序集需要以完全信任的方式执行.
我一直在考虑代码访问安全性,但我不太确定这是我应该使用的.
你会怎么做?
解决方法:
CAS几乎就是你需要的东西.更具体地说,您希望在自己的应用程序域中加载程序集:
var myEvidence = new Evidence(new object[] {SecurityZone.Internet});
var newDomain = AppDomain.CreateDomain("InternetDomain");
myDomain.Load("MyUntrustedAssembly.dll", myEvidence);
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType");
//do your work with the untrusted assembly/type
AppDomain.Unload(myDomain);
阅读应用程序域,各个区域以及分配给它们的默认权限集. Internet是系统定义的区域/权限集中限制最多的,其中程序集仍然可以实际执行(还有Restricted区域;落入此区域的程序集无法运行).您可以使用.NET配置工具创建权限集,并定义代码必须满足的条件(证据)才能被授予权限集.
标签:c,security,net,code-access-security,trust 来源: https://codeday.me/bug/20190610/1212613.html