【发布时间】:2010-04-14 23:33:19
【问题描述】:
我有一个可以通过反射加载插件的网络应用程序。它目前使用Assembly.LoadFrom() 和Activator.CreateInstance() 来完成这项工作。现在插件被加载到同一个 AppDomain 中,并且可以访问我的应用程序中的任何内容以及我的应用程序可以访问的任何内容。
我正在寻找一种方法来限制插件出于安全目的可以访问的类和方法。我想让我的所有类和方法在调用时都抛出异常,除非它们被列入白名单。我基本上会将 API 类中的所有函数和一些数据传输对象列入白名单。
我也不希望插件能够自行访问文件系统或数据库。不过,我认为我可以在单独的 AppDomain 中使用信任级别来做到这一点。
有没有人有任何好的想法或资源?这可以通过代码访问安全性或 .net 4 中的新安全透明代码功能来完成吗?
【问题讨论】:
-
我猜您没有负责保持网站稳定的系统管理员。谁添加插件?客户?
-
我们不允许客户将插件直接上传到实时站点。但是,我们计划采用客户提供给我们的插件并自己将它们添加到网站中。除非我反汇编 dll 并手动检查它,否则我不确定我会 100% 信任它。