这是我上一个问题的后续,我想在加载程序集之前检查它的 StrongName(通过硬盘上的文件或通过字节数据)。以确保它是由我创建的。
Assembly.LoadFrom
使用或时是否需要考虑任何安全风险Assembly.Load
,是否可以通过将恶意代码加载到这些变量中来执行?我应该考虑将这些程序集加载到 AppDomain 中以读取它们吗?
这是我的其余代码:
Assembly dll = Assembly.LoadFrom("UnauthorisedPlugin.dll");
byte[] thisDllKey = Assembly.GetExecutingAssembly().GetName().GetPublicKey();
byte[] dllKey = dll.GetName().GetPublicKey();
if (Enumerable.SequenceEqual(thisDllKey, dllKey))
{
Type pluginType = dll.GetTypes().Single();
IPlugin unauthPlugin = (IPlugin)Activator.CreateInstance(pluginType);
Console.WriteLine(unauthPlugin.Run());
}
else
{
Console.WriteLine("The DLL is not authorised");
}
Console.ReadLine();