2008-10-28 97 views
5

我不太瞭解Silverlight代碼在瀏覽器中的工作原理。程序集是否下載到客戶端機器?代碼是否有機會使用Reflector或類似的工具進行反編譯?如果是這樣,有什麼選擇來保護代碼? .net混淆器是否適用於Silverlight?silverlight代碼是否需要保護?

回答

5

要查看Silverlight應用程序,客戶端下載包含dll和一個配置xml和可選資源的.xap文件。該dll包含在客戶端機器中的Silverlight運行時中運行的已編譯的c#代碼。 Silverlight運行時基本上是完整的.net運行時的子集。所以關鍵是用戶在dll中獲取代碼,然後可以使用工具獲取原始源代碼。所以你最多可以做的就是混淆。仍然是非常關鍵的代碼,不應該是選項。如果它喊出你的需要,你可以使用其他方式(WCF或其他Web服務來隱藏你的代碼的一部分)。

6

無論您何時進入網絡瀏覽器,所有客戶端代碼都會下載到機器上,並且可以由用戶檢查。這適用於Javascript,Flash和Silverlight。

如果您擁有絕對必須隱藏的專有代碼,那麼您需要將其放置在服務器上並公開一個客戶端可以調用以向用戶顯示信息的API。

1

放置雜注 - 無緩存 - 將阻止.xap存儲在計算機上,而是通過Silverlight插件進行流式傳輸。沒有編譯指示,.xap文件存儲在臨時Internet文件中。

把應用程序在頁面上的HTTPS將進一步保護.xap文件的傳歷程

如果可能的話需要身份驗證才能查看的網頁/ .xap文件(感謝喬)

+1

黑客仍然可以手動下載.xap,因爲網頁具有明確說明資源的位置。 – 2008-10-28 18:59:14

2

如果你想看看在Silverlight應用程序中查看代碼是多麼簡單,只需運行SilverlightSpy link textFirstFloor即可。只要你安裝了.NET Reflector,你就可以看到(當你與應用程序交互時)所有的源代碼,包括xaml文件。

由於代碼確實被下載到客戶端(並且即使trying to prevent it with pragma no-cache因爲可以訪問URL而不起作用),您將需要通過在服務器上保留重要的邏輯來保護您的代碼。

2

如果你害怕有人會竊取你的知識產權,那法律是不夠的,那麼你需要混淆你的代碼。但我不會說這種保護,而是對隨便的逆向工程師的威懾。

1

Emrah,

對於SL應用程序是可能的混淆。

0

是的,Silverlight xap文件不過是帶有您的程序集的zip文件,所以它們確實需要通過模糊處理進行保護。嘗試Crypto Obfuscator - 它直接混淆了xap文件,它還可以通過重命名類引用,剝離註釋,空白,換行符等來混淆組裝中的XAML文件。