我正在寻找一种方法来防止未知方将他们自己的包含恶意代码的插件附加到我的应用程序中。我偶然发现了这篇文章
.NET 程序集插件安全性 https://stackoverflow.com/q/932339/1462656
它建议对程序集进行强命名,并检查它是否使用加载时的预期密钥进行强命名。
但是,当我在此站点查看有关强命名程序集的 MSDN 文档时
强名称程序集 https://msdn.microsoft.com/en-us/library/wd40t7ad%28v=vs.110%29.aspx
有一个警告说
不要依赖强名称来确保安全。它们仅提供唯一的身份。
这是什么意思?他们指的是什么安全性,这与我提供的上述堆栈溢出链接中的答案相关吗?
这是一个有趣的评论。
据我了解,签名的程序集表明
1)它已经用某个密钥签名并且
2)签名后不可修改
对于第一点,密钥的安全性非常重要,因为拥有密钥的任何人都可以修改并重新签署程序集。
关于第二点,我在网上看到了一个成功修改程序集同时仍然通过强名称验证的示例。这并不是一件小事。
因此从技术上来说是正确的,您可以使用它来验证身份,但不一定是安全性 - 或者更确切地说是身份验证(插件已签名且未被篡改)与授权(代码本身被授权执行特定操作)之间的区别。
身份验证与授权 https://stackoverflow.com/questions/6556522/authentication-versus-authorization
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)