建議120:爲程序集指定強名稱

建議120:爲程序集指定強名稱

雖然強名稱在設計之初有防止被未授權的第三方軟件非法執行程序的作用,但是因爲它的破解方法並不難,所以現在強名稱更多的意義在於它可以避免出現“DLL HELL”現象。

 “DLL HELL”是指多個應用程序可能調用同一個DLL的情況。在應用程序使用過程中,常常會碰到這樣一種情況:應用程序需要更新。在更新過程中,很有可能將會和別的應用程序公用的DLL也更新了。在以前,這可能會導致其他應用程序無法繼續正常工作。

強名稱原則上擴大了DLL的唯一標識,這個標識包括:程序集名稱、版本號、區域性信息、發行公鑰及數字簽名。由於加密算法本身已保證不會生成相同的公鑰,經過強標識後的程序集,也就不會存在相同性的問題。這就意味着,哪怕存在相同名稱的DLL,該DLL的內容也完全一致,但是隻要他們的強名稱不同,就不會帶來調用混亂的情況。

生成強名稱簽名文件的命令如下:

sn -k yourprofile.snk

也可以在VS中生成該簽名文件。

注意 該簽名文件包含了公鑰-私鑰對,所以它是一個機密文件。如果我們正在開發商業應用程序,應該始終由專人負責保管簽名文件,並對程序集進行簽名,它不應對所有人開放。

 

 

 

轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章