在C#中,您可以使用Assembly.LoadFrom在给定DLL路径的情况下动态加载程序集。一切都很好,适合静态路径。但是,如果要从用户指定的路径加载,该怎么办?
例如,如果您有一个插件系统,并且用户在配置文件中指定了DLL文件的路径,那么您如何防止有人通过插件系统加载恶意代码?换句话说,如果Alice在具有可以指定插件dll的配置文件的系统上运行软件包,那么如果她是的话,你如何让Eve更改配置文件以指向她自己的恶意dll?访问Alice的系统? .NET MEF是否解决了这个问题?
由于
答案 0 :(得分:5)
.NET MEF是否解决了这个问题?
没有。 MEF中没有任何与安全相关的内容。
例如,如果您有一个插件系统,并且用户在配置文件中指定了DLL文件的路径,那么您如何防止有人通过插件系统加载恶意代码?换句话说,如果Alice在具有可以指定插件dll的配置文件的系统上运行软件包,那么如果她获得访问权限,您如何让Eve更改配置文件以指向她自己的恶意dll?爱丽丝的系统?
这实际上更像是IT顾虑 - 如果用户获得对其他用户帐户的访问权限,他们将拥有与该用户相同的控制权。在你的情况下,如果Eve访问Alice的帐户,就没有办法阻止Eve做你想让Alice做的事情(即:加载一个插件)。
在这种情况下,最好的选择是限制哪些插件可以作为一个整体 - 可以通过MAF处理,因为MAF中提供了用于隔离的选项。但是,这个框架使用和实现MEF要复杂得多。
答案 1 :(得分:2)
基本上这个问题与.Net无关,包含两个问题: