限制.net插件可以访问的内容

Dav*_*gue 7 c# security plugins

我有一个Web应用程序,可以通过反射加载插件.它目前使用Assembly.LoadFrom()Activator.CreateInstance()完成这项工作.现在,插件被加载到同一个AppDomain中,可以访问我的应用程序中的任何内容以及我的应用程序可以访问的任何内容.

我正在寻找的是一种限制插件可以出于安全目的访问的类和方法的方法.我想让所有的类和方法在被调用时抛出异常,除非它们被列入白名单.我基本上将API类中的所有函数和一些数据传输对象列入白名单.

我也不希望插件能够自己访问文件系统或数据库.我想我可以在单独的AppDomain中使用信任级别来做到这一点.

有没有人有任何好的想法或资源?这可以通过代码访问安全性或.net 4中新的安全透明代码功能来实现吗?

Dan*_*ant 3

如果您想应用一般访问限制,那么使用单独的 AppDomain 是正确的方法。至于限制对特定于应用程序的逻辑的访问,只需不要将“应用程序内部”服务对象的实例提供给插件对象即可。此外,任何不是 MarshalByRef 的引用类型对象都不会跨越 AppDomain 边界,因此这些对象是安全的,无法访问,即使存在尝试返回它们的公开方法。