我的应用程序加载了许多不同的插件程序集。每个插件都可以将自己的服务添加到 IoC 容器中,也可以使用主应用程序提供的所有服务。
我正在从一个自制的安全解决方案转向使用 CAS(PrincipalPermissionAttribute 和一个从 CodeAccessSecurityAttribute 派生的自己的解决方案)。
我可以防止加载的程序集更改 System.Threading.Thread.CurrentPrincipal (并以这种方式绕过我的安全检查)吗?
我的应用程序加载了许多不同的插件程序集。每个插件都可以将自己的服务添加到 IoC 容器中,也可以使用主应用程序提供的所有服务。
我正在从一个自制的安全解决方案转向使用 CAS(PrincipalPermissionAttribute 和一个从 CodeAccessSecurityAttribute 派生的自己的解决方案)。
我可以防止加载的程序集更改 System.Threading.Thread.CurrentPrincipal (并以这种方式绕过我的安全检查)吗?
您需要拒绝对插件的 SecurityPermission\ControlPrincipal 权限。例如,这可以通过将它们加载到一个应用程序域中来完成,该应用程序域拒绝所有不具有您的强名称签名的代码的此权限。有关此方法的示例,请参见http://blogs.msdn.com/b/shawnfa/archive/2005/08/08/449050.aspx 。