在我发布之前,我听说过我需要强力命名我的二进制文件。有什么想法吗?
答案 0 :(得分:18)
Eric Lippert posted最近关于强大的签约集会:
强名称的目的仅仅是为了确保在按名称加载程序集时,您正在加载您认为正在加载的程序集。你说“我想加载来自FooCorp的Frobber,版本4”。强名称齿轮确保您实际上正确加载该DLL,而不是另一个来自Evil Enterprises博士的名为Frobber,版本4的程序集。然后,您可以设置安全策略,其中说“如果我在我的机器上有来自FooCorp的程序集,则完全信任它”。这些场景是强名称的唯一设计目的。
答案 1 :(得分:2)
在了解强命名程序集时,我发现这个MSDN magazine article非常有用。
答案 2 :(得分:2)
简而言之,强名称程序集与证书签名。他们扮演CAS(代码访问安全)的角色:程序集有权做或不做。
[编辑]正如你们中的一些人所指出的那样:建议创建强大的程序集,因为如果你编写了一些插件机制,它们会更强大地抵御攻击,例如将外部恶意代码引入应用程序。
通过这种方式,您可以限制在应用程序上下文中允许使用的第3方插件。
答案 3 :(得分:2)
回答问题的第二部分:How to: Sign an Assembly with a Strong Name
使用Visual Studio
创建具有强名称的程序集并对其签名在解决方案资源管理器中,打开解决方案的快捷菜单,然后选择属性。
选择签名标签。
选择签署程序集框。
在选择强名称密钥文件框中,选择 ,然后导航到密钥文件。要创建新的密钥文件,请选择 ,然后在创建强名称密钥对话框中输入其名称。
答案 4 :(得分:1)
如果您正在谈论.NET程序集,请参阅the docs。