. net动态DLL加载和安全性

本文关键字:安全性 加载 DLL 动态 net | 更新日期: 2023-09-27 18:16:13

在c#中,您可以使用Assembly.LoadFrom动态加载给定DLL路径的程序集。对于静态路径来说,一切都很好。但是,如果希望从用户指定的路径加载,该怎么办呢?

例如,如果你有一个插件系统,用户在配置文件中指定了DLL文件的路径,你如何防止有人通过插件系统加载恶意代码?换句话说,如果Alice在一个有配置文件的系统上运行一个软件包,其中可以指定插件dll,如果Eve要访问Alice的系统,你如何阻止她修改配置文件以指向她自己的恶意dll ?.NET MEF解决这个问题了吗?

谢谢

. net动态DLL加载和安全性

.NET MEF解决了这个问题吗?

。在MEF中没有任何与安全相关的内容。

例如,如果你有一个插件系统,用户在配置文件中指定了DLL文件的路径,你如何防止有人通过插件系统加载恶意代码?换句话说,如果Alice在一个有配置文件的系统上运行一个软件包,其中可以指定插件dll,如果Eve要访问Alice的系统,你如何阻止她修改配置文件以指向她自己的恶意dll ?

这实际上更多的是一个IT问题——如果一个用户获得了访问另一个用户帐户的权限,他们将拥有与该用户相同的控制权。在你的例子中,如果Eve获得了Alice的账户访问权,你就没有办法阻止Eve做一些你想让Alice做的事情(例如:加载插件)。

在这种情况下,最好的选择是限制插件可以做什么作为一个整体 -这可以通过MAF处理,因为MAF中提供了隔离选项。然而,这个框架的使用和实现要比MEF复杂得多。

本质上这个问题与。net无关,由两个问题组成:

  • 如何防止用户自愿运行恶意代码?-你不
  • 如何防止其他常规用户更改该用户的配置文件?-你将每个用户的配置存储在每个用户可访问的位置(默认用户文件夹是完美的地方)。你不能防止box admin更改任何人的配置/二进制文件。