簡體   English   中英

加密SQL Server 2005

[英]Encryption SQL Server 2005

我有一個SQL Server 2005數據庫,並計划使用PassByPhrase加密某些列。 但是這些列必須以原始形式顯示在我的ASP.Net網頁和某些Crystal Reports上。 現在我知道,每次我的類(顯示數據)訪問數據庫時,我都必須創建一個存儲過程來解密列並運行此存儲過程。 但是,如果我將密碼短語存儲在某個存儲過程中,那么任何有權訪問數據庫的人都可以打開該存儲過程並獲取密碼短語的值。 那加密的重點是什么?

所以我的問題是:

  1. 如何在ASP網頁或Crystal Report上顯示加密的列(以其原始形式)?

  2. 我應該如何保存密碼?

沒有魔術子彈。 當服務必須代表用戶訪問數據時,您始終會看到您遇到的問題。 加密不能替代訪問保護。 如果需要顯示加密的數據,則必須出示解密密鑰。 只有兩種可能性:

  1. 您要求用戶輸入密碼。 用戶輸入密碼(在Web或Crystal中),然后使用該密碼解密數據。 如果用戶想要保護數據免受您的侵害, 這將非常有效 數據受到密碼學的保護,即使對數據具有讀取訪問權限的用戶仍然無法在不知道密碼的情況下解密數據。 在實踐中也基本上不可能實現。
  2. 您將加密密鑰存儲在最終植根於服務主密鑰(因此位於OS DPAPI)中的密鑰層次結構(對稱密鑰->證書->主密鑰->服務主密鑰)中。 請參閱加密層次結構 這樣就可以訪問SQL Server服務本身的解密密鑰,因此, 任何有權訪問服務器的用戶都可以通過簡單地要求服務器為他解密數據來解密數據。 在服務器上時,數據僅受訪問保護(授予/拒絕/撤消SELECT權限)保護。 但是, 可以保護數據免受意外媒體丟失的影響,無論如何這通常是真正的要求。 當許可不允許TDE時,這通常用作窮人解決方案。

這就是全部。 其他任何事情都不是加密層次結構主題的變體(例如,將密碼存儲在ASP.Net配置文件中受保護的部分下),還是普通的老蛇油(例如在應用程序代碼中嵌入密碼)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM