强名/签名程序集的优缺点

时间:2011-04-07 15:16:16

标签: .net assembly-signing

我们有一个包含许多项目的解决方案(可能是20个或更多)。最近我们做了一些更改,需要从COM调用几个这些程序集,这意味着我们需要对它们进行强名称。这些程序集引用了我们项目中的其他程序集,这意味着它们也需要具有强名称。它们还具有InternalsVisibleTo属性,因此被授予的程序集也必须具有强名称。

我建议我们简单地将它们全部命名,而不是试图找到哪些程序集需要签名/强命名。这让几个人对风险感到不安。我认为没有风险,但他们想要签署集会的利弊。我唯一能想到的就是:

赞成

  • 要求打电话给 来自COM的装配
  • 它会让我们 将程序集放入GAC(我们 现在不要这样做)
  • 它阻止了 篡改(我们托管申请, 它没有安装在客户端站点上, 所以不是那么大的问题)

缺点

  • 要求我们将来使用的每个装配都要签名

我有两个具体问题:

  1. 你会说,一般来说,签署/强名称集会是个好主意吗?
  2. 你能想到其他任何利弊吗?

3 个答案:

答案 0 :(得分:5)

你的单身骗局是虚假的。它实际上是专业人士。

  

无符号程序集可以独占使用无符号程序集。 两个签名的程序集和未签名的程序集都可以使用已签名的程序集。

答案 1 :(得分:3)

  • ClickOnce要求您的程序集已签名
  • 许多开源项目不会分发已签名的程序集,并且使用您自己的SNK编译通常并不重要

答案 2 :(得分:3)

"要求从COM"

调用程序集

您不需要对程序集进行签名即可使其成为COM组件。我没有签署程序集就实现了很多COM服务器。

更多缺点:

  • 您无法更新具有新版本的程序集,而无需替换所有其他需要它的程序集=>没有共享组件
  • 无法使用未签名的第三方组件(许多Free / OpenSource)
  • GAC中已签名的程序集未经过验证,有人可以使用任何内容更改/替换您签名的程序集,并且您的程序很乐意接受此任何内容link