【发布时间】:2015-08-14 18:14:13
【问题描述】:
我正在寻找方法以防止未知方将他们自己的包含恶意代码的插件附加到我的应用程序中。我偶然发现了这篇文章
它建议对程序集进行强命名,并在加载时使用预期的键检查它的强命名。
但是,当我查看有关此站点上的强命名程序集的 MSDN 文档时
有一个警告说
不要依赖强名称来保证安全。它们仅提供唯一身份。
这是什么意思?他们指的是什么安全性,这与我提供的上述堆栈溢出链接中的答案有关吗?
【问题讨论】:
我正在寻找方法以防止未知方将他们自己的包含恶意代码的插件附加到我的应用程序中。我偶然发现了这篇文章
它建议对程序集进行强命名,并在加载时使用预期的键检查它的强命名。
但是,当我查看有关此站点上的强命名程序集的 MSDN 文档时
有一个警告说
不要依赖强名称来保证安全。它们仅提供唯一身份。
这是什么意思?他们指的是什么安全性,这与我提供的上述堆栈溢出链接中的答案有关吗?
【问题讨论】:
这是一个有趣的评论。 据我了解,签名的程序集表明 1) 它已经用某个密钥签名并且 2)签名后无法修改
关于第 1 点,密钥的安全性很重要,因为任何拥有密钥的人都可以修改和重新签署程序集。
关于第 2 点,我在网上看到了一个成功修改程序集同时仍通过强名称验证的示例。这不是微不足道的。
所以在技术上是正确的,您可以使用它来验证身份,但不一定是安全性 - 或者更确切地说,身份验证(插件已签名且未被篡改)与授权(代码本身被授权执行特定操作)之间的区别。
【讨论】: