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