我正在創建一個包含多個DLL的應用程序,並認爲我可以在運行時調用Assembly.GetPublicKey()並查看DLL是否由我簽名。但是,現在我看到Assembly上有一個SetPublicKey 方法。難道它不容易讓任何人欺騙我的DLL嗎? 或者我檢查錯誤的方式的DLL的簽名?.net程序集安全問題
更新:我有一個插件架構,我只是試圖通過編寫自己的DLL來防止某人劫持我的應用程序。
我正在創建一個包含多個DLL的應用程序,並認爲我可以在運行時調用Assembly.GetPublicKey()並查看DLL是否由我簽名。但是,現在我看到Assembly上有一個SetPublicKey 方法。難道它不容易讓任何人欺騙我的DLL嗎? 或者我檢查錯誤的方式的DLL的簽名?.net程序集安全問題
更新:我有一個插件架構,我只是試圖通過編寫自己的DLL來防止某人劫持我的應用程序。
不大可能是建議的路線,但我爲我的DLL做的是創建一個類並傳遞一個私鑰到它來激活它。
VAR secureClass =新MyDLL.SecureClass( 「密碼」)
然後在裏面SecureClass任何方法我稱之爲之前我提出的任何代碼如下:
如果IsActivated()= false,那麼 Alert_Not_Active( ) 返回假 結束如果
也許有更好的選擇,但這對我來說很完美。如果它非常重要,請確保使用像{Smart Assembly}這樣的應用程序來保護您的代碼免受反射編碼
.NET中的整個應用程序?在編譯時,任何引用另一個的程序集都應該要求程序集正確簽名,而.NET應該能夠處理這個問題,並且它對於你來說應該是透明的。你不應該自己檢查程序集。
[檢查一個組件,其用於強名稱]的可能重複(http://stackoverflow.com/questions/308756/checking-an-assembly-for-a-strong-name) – 2010-08-19 16:27:39