構(gòu)建安全的 ASP.NET 應(yīng)用程序_第1頁
構(gòu)建安全的 ASP.NET 應(yīng)用程序_第2頁
構(gòu)建安全的 ASP.NET 應(yīng)用程序_第3頁
構(gòu)建安全的 ASP.NET 應(yīng)用程序_第4頁
構(gòu)建安全的 ASP.NET 應(yīng)用程序_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、構(gòu)建安全的 ASP.NET 應(yīng)用程序身份驗(yàn)證、授權(quán)和安全通信有關(guān)構(gòu)建安全的 ASP.NET 應(yīng)用程序 的起點(diǎn)和完整概述,請(qǐng)參見登陸頁面??偨Y(jié)本“如何做”介紹如何在 ASP.NET Web 應(yīng)用程序或服務(wù)中使用 DPAPI 以加密敏感的數(shù)據(jù)。本“如何做”結(jié)合使用 DPAPI 和用戶存儲(chǔ)(它要求使用進(jìn)程外 Enterprise Services 組件)。如何做:在具有 Enterprise Services 的 ASP.NET 中使用 DPAPI(用戶存儲(chǔ))Web 應(yīng)用程序經(jīng)常需要在應(yīng)用程序配置文件中存儲(chǔ)與安全性相關(guān)的數(shù)據(jù),如數(shù)據(jù)庫連接字符串和服務(wù)帳戶憑據(jù)。出于安全性考慮,這種類型的信息決不要以純

2、文本形式存儲(chǔ),而一定要在加密后存儲(chǔ)。 本“如何做”介紹如何在具有 Enterprise Services 的 ASP.NET 應(yīng)用程序中使用數(shù)據(jù)保護(hù) API (DPAPI)。備注DPAPI 能夠與機(jī)器存儲(chǔ)或用戶存儲(chǔ)(需要一個(gè)已加載的用戶配置文件)配合使用。DPAPI 默認(rèn)情況下用于用戶存儲(chǔ),但您可以通過將 CRYPTPROTECT_LOCAL_MACHINE 標(biāo)志傳遞給 DPAPI 函數(shù)來指定使用機(jī)器存儲(chǔ)。這種用戶配置文件方式(本“如何做”中采用的)提供了一個(gè)額外的安全層,因?yàn)樗拗屏四男┯脩裟茉L問機(jī)密內(nèi)容。只有加密該數(shù)據(jù)的用戶才能解密該數(shù)據(jù)。但是,當(dāng)通過 ASP.NET Web 應(yīng)用程序使用

3、 DPAPI 時(shí),使用用戶配置文件需要您執(zhí)行額外的開發(fā)工作,因?yàn)槟枰扇∶鞔_的步驟來加載和卸載用戶配置文件(ASP.NET 不會(huì)自動(dòng)加載用戶配置文件)。有關(guān)介紹如何(直接)在 ASP.NET Web 應(yīng)用程序中結(jié)合使用 DPAPI 和機(jī)器存儲(chǔ)(不需要 Enterprise Services 應(yīng)用程序)的內(nèi)容,請(qǐng)參見本指南“參考”部分中的“如何做:在 ASP.NET 中使用 DPAPI(機(jī)器存儲(chǔ))”。 本“如何做”中介紹的方式使用在 Enterprise Services (COM+) 服務(wù)器應(yīng)用程序中運(yùn)行的 .NET 服務(wù)組件來執(zhí)行 DPAPI 處理,下面的“為什么使用 Enterprise

4、 Services”部分中說明了其中的原因。它還使用 Windows 服務(wù)(“為什么使用 Windows 服務(wù)”部分中說明了其中的原因)。圖 1 中顯示了這一解決方案配置。Insert figure: CH12 - DPAPIHowTo.gif圖 1ASP.NET Web 應(yīng)用程序使用 Enterprise Services 服務(wù)器應(yīng)用程序中的服務(wù)組件以便與 DPAPI 交互在圖 1 中,事件的順序如下所示:1.Windows 服務(wù)控制管理器啟動(dòng) Win32 服務(wù),并自動(dòng)加載與該服務(wù)運(yùn)行帳戶關(guān)聯(lián)的用戶配置文件。同一 Windows 帳戶用于運(yùn)行 Enterprise Services 應(yīng)用程序

5、。2.Win32 服務(wù)在服務(wù)組件上調(diào)用一個(gè)啟動(dòng)方法,它可啟動(dòng) Enterprise Services 應(yīng)用程序并加載服務(wù)組件。3.該 Web 應(yīng)用程序從 Web.config 文件檢索加密字符串。4.該應(yīng)用程序調(diào)用服務(wù)組件上的方法來解密連接字符串。5.服務(wù)組件與使用 P/Invoke 的 DPAPI 交互,以調(diào)用 Win32 DPAPI 函數(shù)。 6.該解密字符串被返回到 Web 應(yīng)用程序。 為什么使用 Enterprise Services?DPAPI 要求使用 Windows 帳戶密碼以派生加密密鑰。DPAPI 使用的帳戶是從當(dāng)前的線程令牌(如果調(diào)用 DPAPI 的線程當(dāng)前正在進(jìn)行模擬)或進(jìn)

6、程令牌獲取的。再者,若要結(jié)合使用 DPAPI 和用戶存儲(chǔ),要求加載與該帳戶關(guān)聯(lián)的用戶配置文件。這給要結(jié)合使用 DPAPI 和用戶存儲(chǔ)的 ASP.NET Web 應(yīng)用程序提出了以下問題:通過在默認(rèn)的 ASPNET 帳戶下運(yùn)行的 ASP.NET 應(yīng)用程序調(diào)用 DPAPI 將會(huì)失敗。這是因?yàn)?ASPNET 帳戶沒有加載的用戶配置文件。 如果將 ASP.NET Web 應(yīng)用程序配置為模擬其調(diào)用方,ASP.NET 應(yīng)用程序線程會(huì)有一個(gè)關(guān)聯(lián)的線程模擬令牌。與該模擬令牌關(guān)聯(lián)的登錄會(huì)話是一種網(wǎng)絡(luò)登錄會(huì)話(在服務(wù)器上用來表示調(diào)用方)。網(wǎng)絡(luò)登錄會(huì)話不會(huì)導(dǎo)致加載用戶配置文件,并且也無法從密碼中派生加密密鑰,因?yàn)榉?wù)

7、器沒有被模擬的用戶的密碼(除非應(yīng)用程序使用基本身份驗(yàn)證)。 為了消除此限制,您可以使用 Enterprise Services 服務(wù)器應(yīng)用程序中的服務(wù)組件(具有固定的進(jìn)程標(biāo)識(shí)),通過使用 DPAPI 來提供加密和解密服務(wù)。為什么使用 Windows 服務(wù)?在此解決方案中使用了 Windows 服務(wù),以確保自動(dòng)加載用戶配置文件。當(dāng) Windows 服務(wù)控制管理器 (SCM) 啟動(dòng)一個(gè)服務(wù)時(shí),SCM 還會(huì)加載所配置的運(yùn)行該服務(wù)使用的帳戶的配置文件??呻S后將該服務(wù)用于加載服務(wù)組件,這可導(dǎo)致啟動(dòng) Enterprise Services 服務(wù)器應(yīng)用程序(在 Dllhost.exe 實(shí)例中)。 由于將 W

8、indows 服務(wù)和服務(wù)組件均配置為使用具有最少權(quán)限的相同帳戶運(yùn)行這一事實(shí),服務(wù)組件可以訪問加載的用戶配置文件,并因而可以調(diào)用 DPAPI 函數(shù)以加密和解密數(shù)據(jù)。 如果沒有從 Windows 服務(wù)中啟動(dòng)服務(wù)組件(并且該服務(wù)與之沒有關(guān)聯(lián)性),則不會(huì)自動(dòng)加載用戶配置文件。雖然可以調(diào)用某個(gè) Win32 API 以加載用戶配置文件 (LoadUserProfile),但是要求調(diào)用代碼是 Administrators 組的一部分,這將違反使用最少權(quán)限運(yùn)行的原則。每當(dāng)調(diào)用服務(wù)組件的 Encrypt 和 Decrypt 方法時(shí),該服務(wù)必須運(yùn)行。在停止 Windows 服務(wù)時(shí),就會(huì)自動(dòng)卸載配置的配置文件。此時(shí)

9、,服務(wù)組件中的 DPAPI 方法停止工作。需求以下各項(xiàng)介紹了推薦的硬件、軟件、網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)、技巧和知識(shí)以及您需要的服務(wù)包:Microsoft® SQL Server 2000 或 Microsoft Windows® XP 操作系統(tǒng)Microsoft Visual Studio® .NET 開發(fā)系統(tǒng) 本篇文章中的各個(gè)過程也要求您具備用 Microsoft Visual C# 開發(fā)工具進(jìn)行 ASP.NET Web 開發(fā)的相關(guān)知識(shí)。總結(jié)“如何做”包括如下過程:1.創(chuàng)建一個(gè)提供 Encrypt 和 Decrypt 方法的服務(wù)組件2. 調(diào)用托管 DPAPI 類庫3.創(chuàng)建一

10、個(gè)用于啟動(dòng)服務(wù)組件的虛擬類4.創(chuàng)建一個(gè) Windows 帳戶來運(yùn)行 Enterprise Services 應(yīng)用程序和 Windows 服務(wù)5.配置、以強(qiáng)名稱命名和注冊(cè)服務(wù)組件6.創(chuàng)建一個(gè)用于啟動(dòng)服務(wù)組件的 Windows 服務(wù)應(yīng)用程序7.安裝并啟動(dòng) Windows 服務(wù)8.編寫一個(gè) Web 應(yīng)用程序來測(cè)試加密例程和解密例程9.修改 Web 應(yīng)用程序,以便從應(yīng)用程序配置文件中讀取加密連接字符串 1. 創(chuàng)建一個(gè)提供 Encrypt 和 Decrypt 方法的服務(wù)組件此過程創(chuàng)建一個(gè)服務(wù)組件以公開 Encrypt 和 Decrypt 方法。在后面的過程中,在 ASP.NET Web 應(yīng)用程序需要加密

11、服務(wù)時(shí),它就會(huì)調(diào)用這些方法。u創(chuàng)建一個(gè)提供 Encrypt 和 Decrypt 方法的服務(wù)組件1.啟動(dòng) Visual Studio .NET,并創(chuàng)建一個(gè)名為 DPAPIComp 的新 C# 類庫項(xiàng)目。2.使用解決方案資源管理器將 Class1.cs 重命名為 DataProtectorComp.cs。3.在 DataProtectorComp.cs 中,將 Class1 重命名為 DataProtectorComp,并相應(yīng)地重命名默認(rèn)的構(gòu)造函數(shù)。4.添加一個(gè)對(duì) System.EnterpriseServices.dll 程序集的程序集引用。5.將以下 using 語句添加到 DataProte

12、ctorComp.cs 的頂部。using System.EnterpriseServices;using System.Security.Principal;using System.Runtime.InteropServices;6.從 ServicedComponent 類中派生 DataProtectorComp 類。public class DataProtectorComp : ServicedComponent7.將以下兩個(gè)空公用方法添加到 DataProtectorComp 類中。public byte Encrypt(byte plainText)public byte De

13、crypt(byte cipherText) 2. 調(diào)用托管 DPAPI 類庫此過程調(diào)用托管 DPAPI 類庫以加密和解密數(shù)據(jù)。此類庫封裝對(duì) Win32 DPAPI 函數(shù)的調(diào)用。如果您還沒有創(chuàng)建此類庫,請(qǐng)參見本指南“參考”部分中的“如何做:創(chuàng)建 DPAPI 庫”。u調(diào)用托管 DPAPI 類庫1.添加對(duì) DataProtection.dll 程序集的文件引用。2.將下面的 using 語句添加到 DataProtectorComp.cs 中現(xiàn)有 using 語句的下面。using DataProtecrion;2.將下面的代碼添加到 Encrypt 方法中以加密提供的數(shù)據(jù)。DataProtect

14、or dp = new DataProtector( DataProtector.Store.USE_USER_STORE );byte cipherText = null;trycipherText = dp.Encrypt(plainText, null);catch (Exception ex)throw new Exception("Exception encrypting." + ex.Message);return cipherText;15.將下面的代碼添加到 Decrypt 方法中以解密提供的密文。DataProtector dp = new DataPro

15、tector( DataProtector.Store.USE_USER_STORE );byte plainText = null;tryplainText = dp.Decrypt(cipherText,null);catch (Exception ex)throw new Exception("Exception decrypting." + ex.Message);return plainText; 3. 創(chuàng)建一個(gè)將啟動(dòng)服務(wù)組件的虛擬類此過程創(chuàng)建一個(gè)虛擬類以公開單個(gè) Launch 方法。該方法是從 Windows 服務(wù)調(diào)用的,以便啟動(dòng)托管服務(wù)組件的 Enterpri

16、se Services 應(yīng)用程序。u創(chuàng)建一個(gè)將啟動(dòng)服務(wù)組件的虛擬類1. 將一個(gè)新的 C# 類添加到項(xiàng)目中,并將其命名為 Launcher.cs。2. 將下面的方法添加到該類。當(dāng)該服務(wù)啟動(dòng)時(shí),它將會(huì)調(diào)用此方法。public bool Launch()return true;3.在“構(gòu)建”菜單中,單擊“構(gòu)建解決方案” 4. 創(chuàng)建一個(gè) Windows 帳戶來運(yùn)行 Enterprise Services 應(yīng)用程序和 Windows 服務(wù)此過程創(chuàng)建一個(gè) Windows 帳戶,該帳戶將用于運(yùn)行托管 DataProtectorComp 服務(wù)組件和 Windows 服務(wù)的 Enterprise Service

17、s 應(yīng)用程序。它還導(dǎo)致為新帳戶創(chuàng)建一個(gè)用戶配置文件。當(dāng) DPAPI 使用用戶存儲(chǔ)時(shí),必須使用該配置文件。u創(chuàng)建一個(gè) Windows 帳戶來運(yùn)行 Enterprise Services 應(yīng)用程序和 Windows 服務(wù)1.創(chuàng)建一個(gè)名為 DPAPIAccount 的新本地用戶帳戶。輸入一個(gè)密碼并清除“用戶下次登錄時(shí)須更改密碼”復(fù)選框,然后選擇“密碼永不過期”復(fù)選框。2.使用“管理工具”程序組中的“本地安全策略”工具,給帳戶授予“在本機(jī)登錄”和“作為批處理作業(yè)登錄”權(quán)限。u為新帳戶創(chuàng)建一個(gè)用戶配置文件1.注銷 Windows。2.使用新的 DPAPIAccount 重新登錄。這將導(dǎo)致為此帳戶創(chuàng)建一個(gè)

18、用戶配置文件。3.注銷 Windows,然后以正常開發(fā)人員帳戶的身份重新登錄。 5. 配置、以強(qiáng)名稱命名和注冊(cè)服務(wù)組件此過程給服務(wù)組件程序集簽名,以便給它指定一個(gè)強(qiáng)名稱。對(duì)于包含服務(wù)組件的程序集來說,這是強(qiáng)制要求。然后,您將給用于在 COM+ 目錄中配置服務(wù)組件的服務(wù)組件程序集添加程序集級(jí)別屬性。此后,您將使用 Regsvcs.exe 實(shí)用程序注冊(cè)服務(wù)組件并創(chuàng)建一個(gè)主機(jī) COM+ 服務(wù)器應(yīng)用程序。最后,您將把 COM+ 應(yīng)用程序的“運(yùn)行方式”標(biāo)識(shí)設(shè)置為在上一過程中創(chuàng)建的服務(wù)帳戶。u配置、以強(qiáng)名稱命名和注冊(cè)服務(wù)組件1.打開一個(gè)命令窗口,并轉(zhuǎn)到 DPAPIComp 項(xiàng)目文件夾。2.使用 sn.ex

19、e 實(shí)用程序生成用于給程序集簽名的密鑰對(duì)。sn -k dpapicomp.snk3.返回到 Visual Studio .NET,打開 Assemblyinfo.cs。4.找到 AssemblyKeyFile 屬性,將一條路徑添加到該項(xiàng)目文件夾的密鑰文件中。assembly: AssemblyKeyFile(".dpapicomp.snk")5.將以下 using 語句添加到文件頂部。using System.EnterpriseServices;6.添加以下程序集級(jí)別屬性,以便將 COM+ 應(yīng)用程序配置為服務(wù)器應(yīng)用程序并指定應(yīng)用程序的名稱。assembly: Applic

20、ationActivation(ActivationOption.Server)assembly: ApplicationName("DPAPI Helper Application")7.在“構(gòu)建”菜單上,單擊“構(gòu)建解決方案”來構(gòu)建服務(wù)組件項(xiàng)目。8.打開一個(gè)命令窗口,并轉(zhuǎn)到 DPAPIComp.dll 文件的項(xiàng)目輸出目錄。9.使用 regsvcs.exe 注冊(cè)服務(wù)組件并創(chuàng)建 COM+ 應(yīng)用程序。regsvcs DPAPIComp.dll10.啟動(dòng)組件服務(wù) Microsoft 管理控制臺(tái) (MMC) 管理單元。11.展開“組件服務(wù)”、“計(jì)算機(jī)”、“我的電腦”和“COM+ 應(yīng)

21、用程序”文件夾。12.找到并右鍵單擊“DPAPI 幫助應(yīng)用程序”,然后單擊“屬性”。13.單擊“激活”選項(xiàng)卡,并確認(rèn)將應(yīng)用程序類型設(shè)置為“服務(wù)器應(yīng)用程序”。14.單擊“標(biāo)識(shí)”選項(xiàng)卡,然后單擊“此用戶”單選按鈕。15.輸入 DPAPIAccount 作為該用戶,并輸入相應(yīng)的密碼,然后單擊“確定”以關(guān)閉“屬性”對(duì)話框。 6. 創(chuàng)建一個(gè)將啟動(dòng)服務(wù)組件的 Windows 服務(wù)應(yīng)用程序此過程創(chuàng)建一個(gè)簡(jiǎn)單的 Windows 服務(wù)應(yīng)用程序;在啟動(dòng)該應(yīng)用程序時(shí),將會(huì)啟動(dòng)服務(wù)組件。這可確保加載配置的帳戶的配置文件,并且組件服務(wù)可用于加密和解密數(shù)據(jù)。u創(chuàng)建一個(gè)將啟動(dòng)服務(wù)組件的 Windows 服務(wù)應(yīng)用程序1.啟動(dòng)

22、一個(gè)新的 Visual Studio .NET 實(shí)例,并創(chuàng)建名為 DPAPIService 的新 C# Windows 服務(wù)項(xiàng)目。2.使用解決方案資源管理器將 Service1.cs 重命名為 DPAPIService.cs。3.在 DPAPIService.cs 中,將 Service1 重命名為 DPAPIService,并相應(yīng)地重命名默認(rèn)的構(gòu)造函數(shù)。4.在 DPAPIService.cs 中,找到 InitializedComponent 方法并將服務(wù)名稱更改為 DPAPIService。5.設(shè)置對(duì) System.EnterpriseServices.dll 和 System.Confi

23、guration.Install.dll 程序集的引用。6.設(shè)置對(duì) DPAPIComp 程序集的文件引用。7.將下面的 using 語句添加到 DPAPIService.cs 頂部現(xiàn)有 using 語句的下面。using DPAPIComp;8.找到 Main 方法并將下面的代碼ServicesToRun = new System.ServiceProcess.ServiceBasenew Service1();替換為以下行。ServicesToRun = new System.ServiceProcess.ServiceBasenew DPAPIService();9.找到 OnStart

24、方法并添加以下代碼,只要該服務(wù)啟動(dòng),它就會(huì)啟動(dòng) DPAPIComp 組件。Launcher launchComponent = new Launcher();launchComponent.Launch();10.將一個(gè)新的 C# 類文件添加到項(xiàng)目中,并將其命名為 DPAPIServiceInstaller。11.將下面的 using 語句添加到 DPAPIServiceInstaller 頂部現(xiàn)有 using 語句的下面。using System.ComponentModel;using System.ServiceProcess;using System.Configuration.Ins

25、tall;12.從 Installer 類中派生 DPAPIServiceInstaller 類。public class DPAPIServiceInstaller : Installer13.按如下所示,在類級(jí)別添加 RunInstaller 屬性。RunInstaller(true)public class DPAPIServiceInstaller : Installer14.將下面的專用成員變量添加到該類。當(dāng)安裝該服務(wù)時(shí),將會(huì)用到這些對(duì)象。private ServiceInstaller dpApiInstaller;private ServiceProcessInstaller d

26、pApiProcessInstaller;15.將以下代碼添加到 DPAPIServiceInstaller 類的構(gòu)造函數(shù)中。dpApiInstaller = new ServiceInstaller();dpApiInstaller.StartType = System.ServiceProcess.ServiceStartMode.Manual;dpApiInstaller.ServiceName = "DPAPIService"dpApiInstaller.DisplayName = "DPAPI Service"Installers.Add (d

27、pApiInstaller); dpApiProcessInstaller = new ServiceProcessInstaller();dpApiProcessInstaller.Account = ServiceAccount.User;Installers.Add (dpApiProcessInstaller);16.在“構(gòu)建”菜單中,單擊“構(gòu)建解決方案” 7. 安裝并啟動(dòng) Windows 服務(wù)應(yīng)用程序此過程使用 installutil.exe 實(shí)用程序安裝 Windows 服務(wù),然后啟動(dòng)該服務(wù)。u安裝并啟動(dòng) Windows 服務(wù)應(yīng)用程序1.打開一個(gè)命令窗口,并轉(zhuǎn)到 DPAPIServ

28、ice 項(xiàng)目文件夾下面的 BinDebug 目錄。2.運(yùn)行 installutil.exe 實(shí)用程序來安裝該服務(wù)。Installutil.exe DPAPIService.exe3.在“設(shè)置服務(wù)登錄”對(duì)話框中,輸入先前在過程 4“創(chuàng)建一個(gè) Windows 帳戶來運(yùn)行 Enterprise Services 應(yīng)用程序和 Windows 服務(wù)”中創(chuàng)建的帳戶的用戶名和密碼,然后單擊“確定”。此用戶名的形式必須為“頒發(fā)機(jī)構(gòu)用戶名”。從 installutil.exe 實(shí)用程序查看輸出結(jié)果,并確認(rèn)該服務(wù)已正確安裝。4.從“管理工具”程序組中啟動(dòng)“服務(wù)”MMC 管理單元。5.啟動(dòng) DPAPI 服務(wù)。 8.

29、 編寫一個(gè) Web 應(yīng)用程序來測(cè)試加密例程和解密例程此過程開發(fā)一個(gè)用于測(cè)試加密和解密例程的簡(jiǎn)單 Web 應(yīng)用程序。然后,您還可以使用它來解密在 Web.config 文件中維護(hù)的加密數(shù)據(jù)。u編寫一個(gè) Web 應(yīng)用程序來測(cè)試加密例程和解密例程1.將一個(gè)名為 DPAPIWeb 的新 C# Web 應(yīng)用程序項(xiàng)目添加到現(xiàn)有 DPAPIComp 解決方案中。2.添加一個(gè)對(duì) System.EnterpriseServices 的程序集引用,并添加一個(gè)對(duì) DPAPIComp 項(xiàng)目的項(xiàng)目引用。3.在“設(shè)計(jì)”模式下打開 WebForm1.aspx,并創(chuàng)建一個(gè)類似圖 1 中所示的表單。將表 1 中列出的 ID 用

30、于單個(gè)控件。表 1:WebForm1.aspx 控件 ID控件ID“要加密的數(shù)據(jù)”文本框txtDataToEncrypt加密的數(shù)據(jù)txtEncryptedData解密的數(shù)據(jù)txtDecryptedData“加密”按鈕btnEncrypt“解密”按鈕btnDecrypt錯(cuò)誤標(biāo)簽lblError Insert figure: DPAPI HowToWebForm.gif 圖 1DPAPIWeb Web 表單5.雙擊該按鈕,創(chuàng)建一個(gè)按鈕單擊事件處理程序。6.將下面的 using 語句添加到文件頂部現(xiàn)有 using 語句的下面。using System.Text;using DPAPIComp;7.返

31、回到“加密”按鈕單擊事件處理程序,并添加以下代碼以調(diào)用 DataProtectorComp 服務(wù)組件來加密通過 Web 表單輸入的數(shù)據(jù)。DataProtectorComp dp = new DataProtectorComp();trybyte dataToEncrypt = Encoding.ASCII.GetBytes(txtDataToEncrypt.Text);txtEncryptedData.Text = Convert.ToBase64String(dp.Encrypt(dataToEncrypt);catch (Exception ex)lblError.ForeColor =

32、Color.Red;lblError.Text = "Exception.<br>" + ex.Message;return;lblError.Text = ""8.再次顯示 Web 表單,然后雙擊“解密”按鈕以創(chuàng)建一個(gè)按鈕單擊事件處理程序。9.添加以下代碼來調(diào)用 DataProtectorComp 服務(wù)組件,以便解密 txtEncryptedData 字段中包含的先前加密的數(shù)據(jù)。DataProtectorComp dp = new DataProtectorComp();trybyte dataToDecrypt = Convert.Fro

33、mBase64String(txtEncryptedData.Text);txtDecryptedData.Text = Encoding.ASCII.GetString(dp.Decrypt(dataToDecrypt);catch (Exception ex)lblError.ForeColor = Color.Red;lblError.Text = "Exception.<br>" + ex.Message;return;lblError.Text = ""10.在“構(gòu)建”菜單中,單擊“構(gòu)建解決方案”11.右擊 WebForm1.asp

34、x,然后單擊“在瀏覽器中查看”。12.在“要加密的數(shù)據(jù)”字段中輸入一個(gè)文本字符串。13.單擊“加密”按鈕。這導(dǎo)致調(diào)用 COM+ 應(yīng)用程序中的 DataProtector 服務(wù)組件。加密的數(shù)據(jù)應(yīng)該顯示在“加密的數(shù)據(jù)”字段中。14.單擊“解密”按鈕并確認(rèn)原始文本字符串顯示在“解密的數(shù)據(jù)”字段中。15.關(guān)閉瀏覽器窗口。 注意:如果出現(xiàn)訪問被拒絕錯(cuò)誤消息,并指示無法從 HKEY_CLASSES_ROOT 讀取組件的 ProgID,則可能需要重新運(yùn)行 Regsvcs.exe 以便重新注冊(cè)服務(wù)組件。 如果已重新編譯服務(wù)組件程序集,但沒有重新注冊(cè)該應(yīng)用程序,就會(huì)出現(xiàn)該錯(cuò)誤消息。因?yàn)槊總€(gè)內(nèi)部版本號(hào)的程序集版本

35、都不相同(由于默認(rèn)的“1.0.*”程序集版本屬性),所以為后續(xù)的每個(gè)內(nèi)部版本號(hào)都生成一個(gè)新的 CLSID。此錯(cuò)誤是由于以下原因造成的:ASP.NET 在注冊(cè)表中無法訪問此 CLSID,因?yàn)樗?dāng)前還不存在。重新運(yùn)行 Regsvcs.exe 并重新啟動(dòng) Web 應(yīng)用程序以解決該問題。9. 修改 Web 應(yīng)用程序,以便從應(yīng)用程序配置文件中讀取加密連接字符串該過程采用一個(gè)加密的數(shù)據(jù)庫連接字符串,并把加密的密碼文本放在該應(yīng)用程序的 Web.config 文件的 <appSettings> 元素內(nèi)。然后您將添加代碼,從該配置文件中讀取和解密該字符串。u修改 Web 應(yīng)用程序以讀取應(yīng)用程序配置文件中的加密連接字符串1.返回到 Visual Studio .NET,以“設(shè)計(jì)器”模式顯示 WebForm1.aspx。2.將另一個(gè)按鈕添加到表單。將其“文本”屬性設(shè)置為“從配置文件解密字符串”并將其 ID 屬性設(shè)置為 btnDecryptConfig。3.雙擊該按鈕,創(chuàng)建一個(gè)按鈕單擊事件處理程序。 4.將下面的 using 語句添加到文件頂部現(xiàn)有 using 語句的下面。using System.Configur

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論