我时不时地在网络上看到一个示例项目,其中包含一个 .snk 文件,用于使用强名称对编译结果进行签名。
AFAIK这是完全错误的——一旦 .snk 文件被披露,任何人都可以生成一个程序集,该程序集可用于替换原始代码供应商提供但现在包含恶意代码的程序集。我想运送 .snk 文件的人不会认真对待这种风险,而只是运送文件,否则该项目将无法编译现成的。
除了“方便”之外,是否有任何理由发送 .snk 文件?
我时不时地在网络上看到一个示例项目,其中包含一个 .snk 文件,用于使用强名称对编译结果进行签名。
AFAIK这是完全错误的——一旦 .snk 文件被披露,任何人都可以生成一个程序集,该程序集可用于替换原始代码供应商提供但现在包含恶意代码的程序集。我想运送 .snk 文件的人不会认真对待这种风险,而只是运送文件,否则该项目将无法编译现成的。
除了“方便”之外,是否有任何理由发送 .snk 文件?
我能想到的唯一原因是允许直接替换您的 dll ......
当然,通常我会说“如果您想要直接替换,请不要签署您的 dll。” 但如果它安装在 GAC 签名中是先决条件。(或者是,上次我知道)。
因此,允许替换安装在 GAC 中的 dll。这是我能想到的唯一合理的理由吗...
至少,我看不出将私钥和公钥对同时发送的理由。如果您需要发送源代码,您也可以使用 .pfx,它通过您需要签署程序集的密码提高了安全性。
无论如何,在许多开源项目中将 .snk 文件添加到源代码管理中似乎是一种常见的做法(不好的做法)。这是一个非常好的问题!