高手教你ADO.NET加密數(shù)據(jù)
我們知道互聯(lián)網(wǎng)是不安全的,我們在傳送數(shù)據(jù)的時候有可能被人攻擊,這里就教大家ADO.NET加密數(shù)據(jù)。保護(hù)和管理 ADO.NET 應(yīng)用程序中的敏感信息依賴于用于創(chuàng)建這些信息的基礎(chǔ)產(chǎn)品和技術(shù)。ADO.NET 不直接提供用于保護(hù)或加密數(shù)據(jù)的服務(wù)。
ADO.NET加密和哈希代碼
可從 ADO.NET 應(yīng)用程序使用 .NET Framework System.Security.Cryptography 命名空間中的類,以防止未經(jīng)授權(quán)的第三方讀取或修改數(shù)據(jù)。某些類是非托管 Microsoft CryptoAPI 的包裝,而其他一些類則是托管實現(xiàn)。加密服務(wù) 主題提供有關(guān) .NET Framework 中的加密方法的概述,并說明如何實現(xiàn)加密以及如何執(zhí)行特定加密任務(wù)。
與加密(允許對數(shù)據(jù)進(jìn)行加密然后解密)不同,散列數(shù)據(jù)是一個單向過程。如果要通過檢查數(shù)據(jù)是否已更改來避免數(shù)據(jù)被篡改,哈希數(shù)據(jù)非常有用:如果輸入字符串相同,哈希算法總是生成相同的短輸出值,可以很容易進(jìn)行比較。使用哈希代碼確保數(shù)據(jù)完整性說明如何生成和驗證哈希值。
ADO.NET加密配置文件
保護(hù)應(yīng)用程序時,最重要的目標(biāo)之一是保護(hù)對數(shù)據(jù)源的訪問。如果連接字符串未受保護(hù),那么它就是一個潛在漏洞。配置文件中保存的連接字符串存儲在標(biāo)準(zhǔn) XML 文件(.NET Framework 已為其定義了一組常用元素)中。通過受保護(hù)的配置,您可以加密配置文件中的敏感信息。雖然受保護(hù)的配置主要是為 ASP.NET 應(yīng)用程序設(shè)計的,但它也可以用于加密 Windows 應(yīng)用程序中的配置文件部分。有關(guān)更多信息,請參見保護(hù)連接信息 (ADO.NET)。
保護(hù)內(nèi)存中的字符串值
如果 String 對象包含敏感信息(如密碼、信用卡號或個人數(shù)據(jù)),將存在信息使用完后可能被泄露的風(fēng)險,因為應(yīng)用程序無法從計算機(jī)內(nèi)存中刪除該數(shù)據(jù)。
String 不可變;其值在創(chuàng)建后無法修改??雌饋硪薷淖址档母膶嶋H上在內(nèi)存中創(chuàng)建了 String 對象的一個新實例,以將該數(shù)據(jù)存儲為純文本。此外,無法預(yù)測何時將從內(nèi)存中刪除字符串實例。字符串的內(nèi)存回收并不是根據(jù) .NET 垃圾回收確定的。如果您的數(shù)據(jù)確實是敏感數(shù)據(jù),則應(yīng)避免使用 String 和 StringBuilder 類。
#T#SecureString 類提供了在內(nèi)存中使用數(shù)據(jù)保護(hù) API (DPAPI) 加密文本的方法。這樣,就可以在不再需要字符串時將其從內(nèi)存中刪除。沒有任何 ToString 方法可快速讀取 SecureString 的內(nèi)容。您可以不使用值或通過向其傳遞一個指向 Char 對象的數(shù)組的指針來初始化 SecureString 的新實例。這樣,您就可以使用類的各種方法來處理字符串。有關(guān)更多信息,請下載 SecureString 示例應(yīng)用程序,它演示如何從中使用 SecureString 類。