延迟签署.NET程序集有什么意义?

时间:2010-04-21 03:44:33

标签: c# .net

我注意到在使用 AssemblyDelaySignAttribute 表示程序集正在开发中并且现在不需要签名之后,我将不得不使用 sn -Vr foolib.dll < / strong>为此程序集注册强名称验证关闭

这样做的重点是什么?为什么不完全放弃组件,直到它完全完成?这不是那么麻烦吗?

3 个答案:

答案 0 :(得分:18)

有几个原因......

  1. 没有强名称的程序集无法添加到GAC
  2. 与#1相关,不在GAC中的程序集不会从NGEN中受益很多
  3. 强大的命名程序集在程序集探测和使用部分名称加载时表现出不同的行为。
  4. 强名称程序集
  5. 无法引用没有强名称的程序集

    因此,在严格控制签名过程的组织中,有助于将其伪造出来进行开发。

答案 1 :(得分:6)

来自AssemblyDelaySignAttribute Class

  

当使用延迟签名时   大会的作者没有   访问将要的私钥   用于生成签名

答案 2 :(得分:3)

这是延迟签名应该阻止的情况:

贵公司为银行制作交易系统。杰克是一个心怀不满的员工。他已经在你的团队工作了一年,并且可以访问用于签署程序集的私钥,因为它是每个人使用的构建的一部分。杰克和他的经理发生了冲突,并留下了所有的源代码。现在杰克决定变得平坦。他为你的软件所在银行的员工钓鱼,他让他们中的一些人下载了一个实用程序,用于交换杰克建立和签署的合法程序集。由于签名匹配,因此调用程序从不明白关键组件已被泄露。

“延迟签名”的目的是只有构建工程师才能访问签名。从理论上讲,这可以减少您需要隐含信任源代码的人数。软件工程师需要在构建和调试时禁用(忽略)强名称检查。