我在許多文章中看到它被寫爲 組件的延遲簽名和強名稱可以防止它被淹死。.net中的延遲簽名和強名稱究竟是什麼?
這是什麼意思?
我知道的唯一情況是沒有強名稱,您無法在GAC中安裝程序集。 所以,假設我有一個沒有強名的組件,它可以是高舉?
有人請澄清我的疑問。
我在許多文章中看到它被寫爲 組件的延遲簽名和強名稱可以防止它被淹死。.net中的延遲簽名和強名稱究竟是什麼?
這是什麼意思?
我知道的唯一情況是沒有強名稱,您無法在GAC中安裝程序集。 所以,假設我有一個沒有強名的組件,它可以是高舉?
有人請澄清我的疑問。
在MSDN上有很多這方面的信息;例如:Strong Naming和Delay Signing
總結基本思想:
強命名是一個簡單的識別標記蓋印組件的方式,以後可以用來驗證其還沒有被修改它被部署了。強名稱基本上是程序集名稱,版本和開發人員特有的「強名密鑰」的哈希。對強名稱組件的引用需要經過更嚴格的驗證,以引用非強名稱組件;特別是,強名稱引用必須與版本號匹配,並且強名稱散列必須匹配。
這有助於避免潛在的安全漏洞的兩種常見的來源在你的程序:
強名稱進程將拒絕這兩個操作,因爲強名稱數據不匹配。這就是爲什麼GAC中的程序集必須具有強大的名稱:它們的用途如此無處不在,否則它們將成爲此類劫持的主要目標。
但是,請注意,強名稱完全不能驗證發佈商的身份。任何人都可以發佈自稱爲微軟的強名稱程序集,強名稱中沒有任何內容可以駁斥該斷言。驗證身份是Authenticode數字簽名的工作,它與強名稱不同。兩者經常一起使用,但它們是正交的概念。
延遲簽名是一種在構建過程之外簽署程序集的技術。這裏的想法是,您的公司可能制定的策略不允許在構建時使用強名稱密鑰(可能它們保持脫機狀態,或者保護密碼)。延遲簽署的程序集標有空白的強名稱密鑰,名稱密鑰:它基本上爲授權用戶預留稍後添加密鑰的空間。與此同時,包含了部分強名鍵 - 僅爲其他程序集提供足夠的信息以提供強有力的參考,但還不足以檢測更改或修改。