2011-09-23 21 views
1

我有一個通過將項目複製到服務器並配置IIS來部署到服務器的ASP.NET應用程序。 現在發生的事情是我需要阻止訪問代碼。有沒有辦法做到這一點? 我是否需要以不同的方式進行部署,或者有辦法以某種方式「加密」代碼,從而導致其無法讀取?在ASP.NET應用程序中隱藏代碼

問候,

+2

「阻止訪問代碼」 - 從誰? – Oded

+0

你的意思是你不想顯示.cs文件,或者你想真正加密dll(程序集),這樣即使高級用戶也無法反編譯和理解。 –

+0

dll的逆向工程沒有問題,因爲沒有高級用戶訪問服務器。當我說「阻止訪問」時,我的意思是代碼不存在或不可讀。 – seth

回答

4

是的,你應該只發布。

在Visual Studio中,在解決方案資源管理器中,右鍵單擊Web項目並選擇發佈。

這將創建您需要部署的所有內容(頁面,程序集,資源...),但不包括源代碼。

+0

不要忘記'app_code'。 – Oded

+0

我做了發佈選項,但它包含了我所有的代碼文件(.aspx和.vb)。難道我做錯了什麼? – seth

+0

是的,因爲它不應該包含代碼文件,只有aspx和dll以及圖像。嘗試使用發佈選項。 –

1

您可以使用混淆如dotFuscator你的組件。

更好的混淆器會阻止大多數反編譯器(比如反射器),但通常不是免費的。


更新:

看到,因爲你是說你根本就不想與你的應用程序部署代碼:

出版應該是足夠的,只要你不使用app_code文件夾 - 此文件夾中的代碼將按原樣部署。

+0

是不是足以發佈? –

+0

@DavidePiras - 如果有人有權訪問DLL,他們可以使用反射器來獲得(近似)原始代碼。 – Oded

+0

我知道,但我認爲這不是OP的意思。無論如何實際上並不清楚,添加一個問題作爲評論原來的問題... –

2

一個簡單的方法是混淆代碼。這本身並不是隱藏的代碼,但它使它很難閱讀和理解。

有關更多信息,請參閱this wiki page

另一方面,如果您使用發佈配置發佈應用程序,則只會上傳程序集和其他對網站至關重要的部分,而不是可讀形式的源代碼。不過要小心,dll可以進行反向設計。