Chr*_*ush 1 .net c# security plugins
在C#中,您可以使用Assembly.LoadFrom动态地给定DLL路径来动态加载程序集。一切都好,对于静态路径也有好处。但是,如果要从用户指定的路径加载怎么办?
例如,如果您有一个插件系统,并且用户在配置文件中指定了DLL文件的路径,那么如何防止有人通过插件系统加载恶意代码?换句话说,如果Alice在具有可指定插件dll的配置文件的系统上运行软件包,那么如果Eve要获得对Eve的访问权限,您将如何阻止Eve更改配置文件以指向她自己的恶意dll。爱丽丝的系统?.NET MEF是否可以解决此问题?
谢谢
.NET MEF是否可以解决此问题?
不。MEF中根本没有与安全相关的东西。
例如,如果您有一个插件系统,并且用户在配置文件中指定了DLL文件的路径,那么如何防止有人通过插件系统加载恶意代码?换句话说,如果Alice在具有可指定插件dll的配置文件的系统上运行软件包,那么如果Eve要获得对Eve的访问权限,您将如何阻止Eve更改配置文件以指向她自己的恶意dll。爱丽丝的系统?
这实际上更像是IT问题-如果用户获得对另一个用户帐户的访问权限,则他们将拥有与该用户相同的控制权。在您的情况下,如果Eve可以访问Alice的帐户,则无法阻止Eve做您想允许Alice做的事情(即:加载插件)。
在这种情况下,最好的选择是限制整个插件可以执行的操作-可以通过MAF处理,因为MAF中提供了隔离选项。但是,与MEF相比,此框架的使用和实现要复杂得多。